Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
public class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
int number = 0;
boolean flag = true;
for(int i = 0 ; i<nums.length-2 ; i++){
if(nums[i] == nums[i+1] && nums[i+1] == nums[i+2]){
i+=2;
}else{
if(nums[i]==nums[i+1]){
number = i + 2;
}else{
number = i;
}
flag=false;
break;
}
}
if(flag){
number = nums.length-1;
}
return nums[number];
}
}
总结: 现在做题做多了,首先看到数组会想到排序,Arrays.sort() ,出里一个顺序数组远比处理一个无序的数组要方便快捷的多。循环里面if 判断是否为三个数相等,如果不想当那这三个序号中肯定有一个就是single number 了,所以再进行一次判断,看到底哪个是single number啦。