LeetCode--single-number复杂度
生活随笔
收集整理的這篇文章主要介紹了
LeetCode--single-number复杂度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、題目
給定一個整數數組,每個元素都出現了兩次,但有一個只出現了一次,請找出這個數。
Note:算法要求有線性時間復雜度,并且不占用額外的空間。
2、解法:
public class Solution {public int singleNumber(int[] A) {int re=0;int i;for(i= 0;i<A.length;i++){re = re^A[i];}return re;} }3、思路:
異或的特點:
? ? ? ? 1).異或滿足交換律。如1^2^1=1,2^1^1=2,一個數被另外兩個數異或兩次,該數本身不變。
????????2).相同兩個數異或為0。
????????3).0異或一個數為那個數本身。
4、擴展:
異或也可以實現兩個數據的交換,不用臨時變量的方法。
x = x^y; y = x^y; x = x^y;?
總結
以上是生活随笔為你收集整理的LeetCode--single-number复杂度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置编译win7+VS2017+open
- 下一篇: LeetCode-reverse int