第 478 场周赛Q1——3759. 统计合格元素的数目

题目链接: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; } }