1. 程式人生 > >Single Number

Single Number

style 出現的次數 num cep 一個 排序 algorithm for code

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?

分析:找出一堆數組中只出現一次的那個,且時間復雜度為o(n);

思路1:

先排序,後依次比較兩兩是否相同,不同的那一組的第一個數就是。但需要使用一個復雜度為o(n)的排序法;

思路2:

直接統計每個數出現的次數,使用map,將數作為鍵,值為下標。若重復出現就將值置為-1,再次遍歷即可;

思路3:

利用異或^的運算特性,相同的數異或為0,0和其他數異或為其他數,異或滿足可交換,所以全體異或即可;

JAVA CODE

class Solution {
    public int singleNumber(int[] nums) {
        int m = 0;
        for(int i = 0; i < nums.length; i++){
            m = m ^ nums[i];
        }
        return m;
    }
}

Single Number