概述
LeetCode题目描述:给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。题目链接
示例 :
输入: [1,2,1,3,2,5]
输出: [3,5]
方法1:代码链接 对数组进行排序,排序后比较相邻数字是否相同。图示:
import java.util.Arrays;
class Solution {
public int[] singleNumber(int[] nums) {
int[] a = new int[2];
int j = 0;
Arrays.sort(nums);
for(int i = 0;i < nums.length;){
if(i == nums.length - 1){
a[1] = nums[i];
break;
}
if(nums[i] == nums[i + 1]){
i += 2;
}else{
a[j] = nums[i];
i++;
j++;
}
}
return a;
}
}
方法2:代码链接 异或
class Solution {
public int Exclusiveor(int[] a){
int result = a[0];
for(int i = 1;i < a.length;i++){
result ^= a[i];
}
return result;
}
public int[] singleNumber(int[] nums) {
int tmp = Exclusiveor(nums);
int pos = 0;
for(pos = 1;pos <= 32;pos++){
if((tmp >> pos & 1) == 1){
break;
}
}
int a = 0;
for(int j = 0;j < nums.length;j++){
if((nums[j] >> pos & 1) == 1){
a ^= nums[j];
}
}
int[] array = {a,a ^ tmp};
return array;
}
}
最后
以上就是美满凉面为你收集整理的260:只出现一次的数字2的全部内容,希望文章能够帮你解决260:只出现一次的数字2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复