只出現一次的數字

給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4

解答思路,這道題主要是考察了Java中的二進制運算符(與&;或|;非~,異或^),沒接觸過的同學不容易想到,其中這道題主要考察異或運算符的用法。

復習一下這些二進制操作符的用法如下:
與(&):兩個操作數中位都為1,結果才為1,否則結果為0;
或(|):兩個位只要有一個為1,那么結果就是1,否則就為0;
非(~):如果位為0,結果是1,如果位為1,結果是0;
異或(^):兩個操作數的位中,相同則結果為0,不同則結果為1。

具體代碼如下:

public  int singleNumber(int[] nums) {
        int result = 0;
        for (int i : nums) {
            result = result ^ i;
        }
        return result;
    }
fun singleNumber(nums: IntArray): Int {
         var result = 0
         for (i in nums) {
             result = result xor i
           }
       return result
    }
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容