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));}
}