136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
记录题解
public class SingleNumber{
public static void main(String[] args) {
Solution solution = new SingleNumber().new Solution();
System.out.println(solution.singleNumber(new int[]{4,1,2,1,2}));
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int singleNumber(int[] nums) {
int temp,ans = 0;
boolean flag = true;
int len = nums.length;
int i = 0;
while (i < len && flag){
ans = nums[i];
int k = i+1;
for (; k < len; k++) {
if (nums[k] == ans){
if (k != i+1){
temp = nums[i+1];
nums[i+1] = nums[k];
nums[k] = temp;
}
break;
}
if (k == len-1) flag = false;
}
i += 2;
}
return ans;
}
}
力扣官方题解(异或)
class Solution {
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
}