这里数组为什么越界了?

这里数组为什么越界了?

class Solution {
    public int specialArray(int[] nums) {
        int x = nums.length;
        Arrays.sort(nums);
        for(int i = 0;i < nums.length;i++){
            if(nums[i] >= x-i && i==0 ? true : nums[i-1]<x-i){
                return x-i;
            }
        }
        return -1;
    }
}

这是报错样例:

img

三元表达式,&&改||

少了对括号

   int x = nums.length;
        Arrays.sort(nums);
        for(int i = 0;i < nums.length;i++){
            if(nums[i] >= x-i && (i==0 ? true : nums[i-1]<x-i)){
                return x-i;
            }
        }
        return -1;