62 lines
1.5 KiB
Java
62 lines
1.5 KiB
Java
//数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1
|
||
//) 的解决方案。
|
||
//
|
||
//
|
||
//
|
||
// 示例 1:
|
||
//
|
||
//
|
||
//输入:[1,2,5,9,5,9,5,5,5]
|
||
//输出:5
|
||
//
|
||
// 示例 2:
|
||
//
|
||
//
|
||
//输入:[3,2]
|
||
//输出:-1
|
||
//
|
||
// 示例 3:
|
||
//
|
||
//
|
||
//输入:[2,2,1,1,1,2,2]
|
||
//输出:2
|
||
// Related Topics 数组 计数
|
||
// 👍 134 👎 0
|
||
|
||
package leetcode.editor.cn;
|
||
|
||
//面试题 17.10:主要元素
|
||
public class FindMajorityElementLcci {
|
||
public static void main(String[] args) {
|
||
//测试代码
|
||
Solution solution = new FindMajorityElementLcci().new Solution();
|
||
}
|
||
|
||
//力扣代码
|
||
//leetcode submit region begin(Prohibit modification and deletion)
|
||
class Solution {
|
||
public int majorityElement(int[] nums) {
|
||
int nu = -1;
|
||
int count = 0;
|
||
for (int num : nums) {
|
||
if (count == 0) {
|
||
nu = num;
|
||
}
|
||
if (nu == num) {
|
||
count++;
|
||
} else {
|
||
count--;
|
||
}
|
||
}
|
||
count = 0;
|
||
for (int num : nums) {
|
||
if (nu == num) {
|
||
count++;
|
||
}
|
||
}
|
||
return count * 2 > nums.length ? nu : -1;
|
||
}
|
||
}
|
||
//leetcode submit region end(Prohibit modification and deletion)
|
||
|
||
} |