win10工作列顯示“中/英“語言標識
阿新 • • 發佈:2021-01-23
陣列中數字出現的次數
利用異或操作。陣列元素相互異或後,剩餘的一定是兩個出現次數為1的元素。此時判斷這兩個元素的第k位不相同,為1的放在一個集合中,為0的放在另一集合中。兩個集合異或後剩餘的分別是出現次數為1的數字。
class Solution {
public int[] singleNumbers(int[] nums) {
int sum = 0;
for (int num : nums) {
sum ^= num;
}
int k = 0;
while ((sum >> k & 1) != 1) k++;
int first = 0;
for (int num : nums) {
if ((num >> k & 1) == 1) first ^= num;
}
return new int[] {first, sum ^ first};
}
}