陣列 leetcode 只出現一次的數字

2021-09-27 13:24:29 字數 977 閱讀 1009

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:

你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

輸入: [4,1,2,1,2]

輸出: 4

實現說明-1:

1、首先對陣列進行排序

2、一次遍歷,兩個一組判斷數字是否相等,相等繼續,不相等則找出答案。

static int compar(const void *num1, const void *num2 )

int singlenumber(int *nums, int numssize)

qsort(nums, numssize, sizeof(int), compar);

for (i = 0; i < numssize - 1; i += 2)

}return nums[numssize - 1];

}

實現說明-2:

如上演算法雖然可以得到此題的答案,但是並不能,滿足線性時間複雜度的要求,因為對陣列的排序和遍歷查詢使得陣列會存在多次遍歷。

從題中其餘元素只出現兩次的特徵可以想到使用異或運算。

異或運算:

1)相同的數異或結果是:0

2)不同的數異或結果是:1

基於異或運算,陣列中所有的數全部異或運算一次即可以得到只出現一次的數。

實現如下:

int singlenumber(int *nums, int numssize)

return num;

}

leetcode 陣列 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4思路 異或法,根據異或運算的特點,相同的數字經過...

陣列中只出現一次

首先看看題目要求 陣列a中,除了某乙個數字 x之外,其他數字都出現了三次,而 x出現了一次。請給出最快的方法找到x。這個題目非常有意思,在本人部落格中有 位操作基礎篇之位操作全面總結 這篇文章介紹了使用位操作的異或來解決 陣列中其他數字出現二次,而x出現一次,找出x。有 這邊文章介紹了分組異或的方法...

LeetCode 陣列 2 只出現一次的數字

1.只出現一次的數字 給定乙個整數陣列,除了某個元素外其餘元素均出現兩次。請找出這個只出現一次的元素。分析 1.利用異或位運算的特性 int singlenumber vector nums result count 3 3.只出現一次的數字 iii 給定乙個整數陣列 nums,其中恰好有兩個元素只...