[LeetCode]169. 多数元素(java实现)投票算法
1. 题目
2. 读题(需要重点注意的东西)
思路(投票算法):
要求: 时间复杂度为O(n)
、空间复杂度为O(1)
-
用r存储当前存的数,用cnt存储当前存的数的数量
-
当遇到一个与r中存储的数不同的数时,使cnt减一
-
当cnt为0时,将当前的数赋给r,然后将cnt置为1
-
遍历一遍数组后,最后r中存储的数就是答案。
3. 解法
---------------------------------------------------解法---------------------------------------------------
class Solution {
public int majorityElement(int[] nums) {
int r = nums[0] ,cnt = 0;
for(var num : nums){
if(r == num) cnt++;
else {
if(cnt > 0) cnt --;
else{
r = num;
cnt = 1;
}
}
}
return r;
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 投票算法