标题:229求众数II-中等
题目
给定一个大小为 n 的整数数组,找出其中所有出现超过
⌊ n/3 ⌋次的元素。
示例1
输入:[3,2,3]
输出:[3]
示例2
输入:nums = [1]
输出:[1]
示例3
输入:[1,1,1,3,3,2,2,2]
输出:[1,2]
提示
1 <= nums.length <= 5 * 104-109 <= nums[i] <= 109
进阶
**进阶:**尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。
代码Java
// 未实现进阶任务
public List<Integer> majorityElement(int[] nums) {
List<Integer> list = new ArrayList<Integer>();
Arrays.sort(nums);
if (nums.length == 1) {
list.add(nums[0]);
return list;
}
if (nums.length == 2) {
if (nums[0] == nums[1]) {
list.add(nums[0]);
return list;
}
else {
list.add(nums[0]);
list.add(nums[1]);
return list;
}
}
for (int i = 0; i < nums.length - nums.length / 3; i++) {
if (nums[i] == nums[i + nums.length / 3]) {
if (!list.contains(nums[i]))
list.add(nums[i]);
i = i + nums.length / 3;
}
}
return list;
}
寻找数组中出现次数超三分之一体现的众数
824

被折叠的 条评论
为什么被折叠?



