首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode Single Number:異或運算找唯一單一數字

     編輯:關於C++

問題描述

數組中除一個數出現一次外,其餘均出現兩次。找出該單一數字。要求線性時間、常數空間。

異或性質

  • x ^ x = 0
  • x ^ 0 = x
  • 滿足交換律、結合律

因此,所有數異或後,成對數抵消為 0,剩下的即為單一數字。

代碼實現

int singleNumber(int* nums, int numsSize) {
    int res = 0;
    for (int i=0; i

對比:計數排序法(失敗)

嘗試用計數數組統計頻次,但無法處理負數索引,且空間非 O(1)。異或法完美解決。

LeetCode 提交結果

Accepted

Runtime

總結

Single Number 是異或運算經典應用。核心口訣:「成對抵消,孤獨留存」。擴展:若其餘數出現 3 次,需用有限狀態機(兩個變量模擬三進制計數器)。掌握異或性質,位運算題迎刃而解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved