陣列中數字出現的次數

2021-10-20 22:39:18 字數 611 閱讀 7376

乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。

思路:先整體異或出乙個數ret,變為兩個不同數的異或,因為相同的數,異或都是0,任何數異或0,都是自己本身

然後再找出二進位制中,ret中第乙個1為dif,就是兩個不同的數的二進位制,這個位不一樣

再遍歷整個陣列,如果當前數&dif為0,便是兩個不同數的其中乙個數,如果當前數&dif為1,便是兩個數的其中另乙個數。

不用擔心其他出現兩次的數,因為他們也會異或同乙個數,兩個相同的數異或為0

class

solution

int dif =1;

//找出ret二進位制第乙個1,區分出,兩個不相同的數中,哪一位不相同

//然後如果&dif==0,是乙個數,當然其他存在兩個的數^起來,還是0

while

((dif&ret)==0

)int a=0;

int b=0;

for(

int n:nums)

else

}return

newint

;}}

陣列中數字出現的次數

題目 乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 示例 1 輸入 nums 4,1,4,6 輸出 1,6 或 6,1 示例 2 輸入 nums 1,2,10,4,1,4,3,3 輸出 2,10 或 1...

陣列中數字出現的次數

陣列中數字出現的次數 乙個整型陣列nums裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 示例 1 輸入 nums 4,1,4,6 輸出 1,6 或 6,1 示例 2 輸入 nums 1,2,10,4,1,4,3,3 輸出 2,...

陣列中數字出現的次數

乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。define crt secure no warnings include include include 異或 intcontinuousxor int arr,int sz return ret ...