题目链接:3759. 统计合格元素的数目(中等)
算法原理:
解法:双指针
47ms击败49.92%
时间复杂度O(Nlogn)
①边界条件:
如果k=0,说明没有元素比它大,直接返回长度n
如果n=0,直接返回0
②排序后先将当前位置设为 i ,让 j 指向第一个不等于 i 位置元素的位置,目的在于不漏算相同的元素
③如果 i 所指元素的后面的元素存在至少
k个元素严格大于它,那么就累加 ( j - i ),然后更新 i 的位置
Java代码:
class Solution { public int countElements(int[] nums, int k) { int n=nums.length; if(n==0) return 0; if(k==0) return n; Arrays.sort(nums); int ret=0,i=0; while(i<n){ int j=i; //保证相同元素不漏算 while(j<n&&nums[j]==nums[i]) j++; if(n-j>=k) ret+=(j-i); i=j; } return ret; } }