【LeetCode每日一题】只出现一次字样的数组
只出现一次字样的数组
1、题目描述
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例1:
输入:nums = [2,2,3,2]
输出:3
示例2:
输入:nums = [0,1,0,1,0,1,99]
输出:99
2、算法描述
核心思想:
把数组先排序一下,这样我们可以把相同的数字放在一起,然后记录一下重复数组的个数,个数大于2,我们就移动到下一个,寻找数字的个数为一的那个数
具体实现:
1、把数组排序
2、开始遍历,一旦遇到2个重复的,就将遍历指针移动两个,然后进行下一轮比较
3、代码实现
package com.java;
import java.util.Arrays;
/**
* @author huangchao
* @date 2021/4/30
*/
public class Day28_Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
int num = nums[0];
int count = 1;
for (int i=1;i<nums.length;i++) {
if (num == nums[i]) {
count++;
}
if (count > 1) {
i = i + 2;
num = nums[i];
count = 1;
}
}
return num;
}
}