Single Number
阿新 • • 發佈:2017-09-03
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