1- 思路
题目识别
- 识别1 :统计数组中出现数量多余 [n/2] 的元素
技巧
- 值相同,则对
count +=1
,如果不相同则对值进行 count -= 1
- 如果
count==0
,此时更新 candidate
2- 实现
⭐136. 只出现一次的数字——题解思路
class Solution {
public int majorityElement(int[] nums) {
int count = 0;
int candidate = 0;
for(int i : nums){
if(count==0){
candidate = i;
}
count += (i == candidate) ? 1:-1;
}
return candidate;
}
}
3- ACM 实现
public class majorityElement {
public static int isCandidate(int[] nums) {
int candidate = 0;
int count = 0;
for(int i: nums){
if(count==0){
candidate = i;
}
count += (i == candidate) ? 1:-1;
}
return candidate;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
input = input.replace("[","").replace("]","");
String[] parts = input.split(",");
int[] nums = new int[parts.length];
for(int i = 0 ; i < nums.length;i++){
nums[i] = Integer.parseInt(parts[i]);
}
System.out.println("结果是"+isCandidate(nums));
}
}