136. Single Number

来源:互联网 发布:贪吃飒淘宝店 编辑:程序博客网 时间:2024/06/06 19:41


Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

解法一:对数组排序,判断如果和下一个相同,向前移动两位,直到找到和下一个不同的,return这个数;最后一个需特殊处理

public class Solution {    public int singleNumber(int[] nums) {        if(nums==null||nums.length==0)            return -1;        Arrays.sort(nums);        int i=0;        while(i<nums.length-1)        {            if(nums[i]==nums[i+1])            {                i=i+2;            }            else                return nums[i];        }        return nums[nums.length-1];    }}

解法二:0^N=N;N^N=0;只需要遍历数组,逐个异或,出现两次的都是0,最后遍历完的结果就是只出现一次的那个元素N

public int singleNumber(int[] nums) {    int ans =0;       int len = nums.length;    for(int i=0;i!=len;i++)        ans ^= nums[i];    return ans;}


0 0