概述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1] 输出: 1
示例 2:
输入: [4,1,2,1,2] 输出: 4
方法:
1.暴力
2.set/map
3.排序后判断a[i]!=a][i-1]&&a[i]!=a[i+1]的就是答案
4.位运算,异或 ^
性质:
1.一个数与两个相同的数异或结果还是这个数
2.一个数与0异或结果还是这个数
class Solution {
public int singleNumber(int[] nums) {
int ans = nums[0];
for(int i=1,len=nums.length;i<len;i++)
ans ^= nums[i];
return ans;
}
}
public static void solove() {
int []num={4,1,2,1,2};
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<num.length;i++){
Integer value=map.get(num[i]);
map.put(num[i],(value == null)?1:value+1);
}
for(Integer i : map.keySet()){
if(map.get(i)==1)
System.out.println(i);
}
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
# write code here
if not array:
return
res = []
for one in array:
if one in res:
res.remove(one)
else:
res.append(one)
return res
最后
以上就是还单身蜗牛为你收集整理的只出现一次的数字的全部内容,希望文章能够帮你解决只出现一次的数字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复