题目:只出现一次的数
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
提示:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
解题
方法一:用嵌套for循环实现,查看每个元素的重复个数。
class Solution {
public int singleNumber(int[] nums) {
int result=0;
for(int i=0;i<nums.length;i++){
int index=0;
for(int j=0;j<nums.length;j++){
if(nums[i]==nums[j]){
index++;
}
}
if(index==1){
result = nums[i];
}
}
return result;
}
}
方法2:
先排序,再用跨两位比较数值。相对省时间
class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
int len = nums.length;
int l = 0, r = 2;
while(r < len) {
if(nums[l] != nums[r]) {
return nums[l];
} else {
l += 3;
r = l + 2;
}
}
return nums[len - 1];
}
}