題目:
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。找出這兩個數字。時間複雜度o(n),空間複雜度:o(1)。
例如陣列:int num = ;找出3和4。
**:#include using namespace std;
//功能:陣列中只出現一次的數字
//乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。找出這兩個數字。時間複雜度o(n),空間複雜度:o(1)。
//思路:先異或,得到的結果肯定不為0,然後查詢這個結果(二進位制形式的結果)的第乙個為1的位置,把陣列分成這個位置為1的和這個位置不為1的
//然後對為1的異或和不為1的異或即可得到結果
//從二進位制為32位num的最後一位開始查詢第一次為1的位置
unsigned findfirstbitis1(int num)
return indexbit;
}//判斷num的第indexbit(從後向前)是否為1
bool isbit1(int num , unsigned indexbit)
//查詢只出現一次的兩個數字
unsigned int indexof1 = findfirstbitis1(result);//result肯定不為0,所以肯定能找到indexof1
for(int j = 0 ; j < length ; j++)
else
}}int main()
; int length = sizeof(num) / sizeof(*num);
int num1 = 0;
int num2 = 0;
cout<
劍指offer 陣列 陣列中只出現一次的數字
思路 借用列表中的刪除元素功能。coding utf 8 class solution 返回 a,b 其中ab是出現一次的兩個數字 def self,array write code here list for e in array if e not in list else del list li...
劍指offer (陣列)陣列中只出現一次的數字
1 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這1個只出現一次的數字。要求時間複雜度為o n 控制項複雜度為o 1 2 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度為o n 控制項複雜度為o 1 1 當陣列中只存...
劍指offer 陣列中只出現一次的數字
1 乙個數字出現一次,其他數字出現兩次 兩個相同的數異或為0,所以將陣列裡的所有數依次異或,得到的結果就是只出現一次的數。include using namespace std int main int num 0 for int i 0 i 7 i cout 2 乙個數字出現一次,其他數字出現n次...