---
# System prepended metadata

title: 1608. Special Array With X Elements Greater Than or Equal X
tags: [Leetcode, Easy, Binary Search]

---

# 1608. Special Array With X Elements Greater Than or Equal X
###### tags: `Leetcode` `Binary Search` `Easy`
Link: https://leetcode.com/problems/special-array-with-x-elements-greater-than-or-equal-x/
## 思路 $O(NlogN)$ $O(1)$
## Code
```java=
class Solution {
    public int specialArray(int[] nums) {
        int start = 0;
        int max = 0;
        for(int num:nums) max = Math.max(max, num);
        int end = Math.min(max, nums.length);
        
        while(start<end){
            int mid = start+(end-start)/2;
            int numOfGreaterorEqual = count(nums, mid);
            if(numOfGreaterorEqual > mid){
                start = mid+1;
            }
            else end = mid;
        }
        return count(nums, start)==start?start:-1;
    }
    private int count(int[] nums, int x){
        int count = 0;
        for(int num:nums) if(num>=x) count++;
        return count;
    }
}
```