劍指 Offer 56 - I. 數組中數字出現的次數

一個整型數組 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] 或 [10,2]

限制:

2 <= nums.length <= 10000

解題思路

  1. 計算出所以元素異或的結果,因為只有兩個不相同的元素,而其他相同元素的異或結果都為0,所以這個異或的結果就是我們需要找的兩個不相同數字的異或結果。
  2. 這兩個不相同的數字的二進制表示肯定有一位以上是不相同的(即一個為0,一個為1),所以我們可以根據這位的0和1,將數字分為兩組,因為重復數字的每一位都是相同的,因此必能分到一組,而重復數字進行異或的結果必為0,所以最終每一組就只能剩下不相同的兩個數字

代碼

class Solution {public int[] singleNumbers(int[] nums) {int tar = 0;for (int num : nums) {tar ^= num;}int c = 1;while ((tar & c) == 0)c <<= 1;int a = 0, b = 0;for (int num : nums) {if ((num & c) == 0)a ^= num;else b ^= num;}return new int[]{a, b};}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390471.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390471.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390471.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

表達愛意的程序_如何像程序員一樣表達愛意??

表達愛意的程序Today is Valentines Day! &#x1f60d; 今天是情人節&#xff01; &#x1f60d; How nice would it be if you sent a Romantic Message every hour to your loved one? But even better... 如果您每小時向您所愛的人發送一封浪漫的短信&#xff0c;那將有多…

工作中的小問題

1、a標簽的選擇問題 需要修改帶class的a標簽的hover的文字顏色&#xff0c;方式如下 <style>a.egHyperlink:hover{color:red;} </style> <a href"#" class"egHyperlink">smile</a> 復制代碼2、hr分割線 需要一條粉紅色的分割線&am…

More DETAILS! PBR的下一個發展在哪里?

最近幾年圖形學社區對PBR的關注非常高&#xff0c;也許是由于Disney以及一些游戲引擎大廠的助推&#xff0c;也許是因為它可以被輕松集成進實時渲染的游戲引擎當中&#xff0c;也許是因為許多人發現現在只需要調幾個參數就能實現具有非常精細細節的表面著色了。反正現在網絡上隨…

sql server 2008 身份驗證失敗 18456

雙擊打開后加上 ;-m 然后以管理員方式 打開 SQLSERVER 2008 就可以已window身份登錄 不過還沒有完 右鍵 屬性 》安全性 更改為 sql server 和 window身份驗證模式 沒有sql server登陸賬號的話創建一個 然后把-m去掉就可以用帳號登錄了 轉載于:https://www.cnblogs.com/R…

js 兩個方法

//js in_array方法function in_array(all,one) { for(i0;i<all.length;i) { if(all[i] one) return true; } return false; } //js in_array方法/*** 一維數組去重方法** param arr 需要去重數組* returns {Array} 返回已經去重數組*/function unique(arr) {var ret [];va…

敏捷數據科學pdf_如何將敏捷框架應用于數據科學項目

敏捷數據科學pdfIn this article, well discuss how agile principles and values can be applied to the way you approach data science projects.在本文中&#xff0c;我們將討論如何將敏捷性原則和價值觀應用于您處理數據科學項目的方式。 Project management methodologi…

劍指 Offer 56 - II. 數組中數字出現的次數 II

在一個數組 nums 中除一個數字只出現一次之外&#xff0c;其他數字都出現了三次。請找出那個只出現一次的數字。 示例 1&#xff1a; 輸入&#xff1a;nums [3,4,3,3] 輸出&#xff1a;4 示例 2&#xff1a; 輸入&#xff1a;nums [9,1,7,9,7,9,7] 輸出&#xff1a;1 限制…

Java逆向基礎之AspectJ的獲取成員變量的值

注意&#xff1a;由于JVM優化的原因&#xff0c;方法里面的局部變量是不能通過AspectJ攔截并獲取其中的值的&#xff0c;但是成員變量可以在逆向中&#xff0c;我們經常要跟蹤某些類的成員變量的值&#xff0c;這里以獲取ZKM9中的qs類的成員變量g為例進行說明在StackOverFlow上…

鹽噪聲和胡椒噪聲的區別_為什么加一點鹽對您的密碼很有用(但不包括胡椒粉!)

鹽噪聲和胡椒噪聲的區別A brief note - this article is about the theory of how to crack hashed passwords. Understanding how cybercriminals execute attacks is extremely important for understanding how to secure systems against those types of attacks. 簡要說明…

【Luogu1393】動態逆序對(CDQ分治)

【Luogu1393】動態逆序對&#xff08;CDQ分治&#xff09; 題面 題目描述 對于給定的一段正整數序列&#xff0c;我們定義它的逆序對的個數為序列中ai>aj且i < j的有序對(i,j)的個數。你需要計算出一個序列的逆序對組數及其刪去其中的某個數的逆序對組數。 輸入輸出格式 …

iOS底層原理探究-Runloop

Runloop 1. 概述 一般來說&#xff0c;一個線程只能執行一個任務&#xff0c;執行完就會退出&#xff0c;如果我們需要一種機制&#xff0c;讓線程能隨時處理時間但并不退出&#xff0c;那么 RunLoop 就是這樣的一個機制。Runloop是事件接收和分發機制的一個實現。 RunLoop實際…

p2020開發_2020年最佳開發者社區

p2020開發If you want to grow as a developer, I cant over-emphasize the benefits of joining a developer community. There are many advantages, from peer-programming to sharing knowledge, mentorship, sharing support, sharing tools, code reviews, answering que…

leetcode 1838. 最高頻元素的頻數

元素的 頻數 是該元素在一個數組中出現的次數。 給你一個整數數組 nums 和一個整數 k 。在一步操作中&#xff0c;你可以選擇 nums 的一個下標&#xff0c;并將該下標對應元素的值增加 1 。 執行最多 k 次操作后&#xff0c;返回數組中最高頻元素的 最大可能頻數 。 示例 1&…

Deepin系統手動安裝oracle jdk8詳細教程

Deepin系統手動安裝oracle jdk8詳細教程 oracle官網下載jdk壓縮包&#xff0c;使用 sudo tar -zxf jdk***解壓文件&#xff0c;我放在在了home/diy/java/jdk路徑下。 jdk文件路徑&#xff1a;/home/diy/java/jdk/jdk1.8.0_152 JDK環境變量配置 修改配置文件 sudo vi /etc/profi…

Spark 鍵值對RDD操作

https://www.cnblogs.com/yongjian/p/6425772.html 概述 鍵值對RDD是Spark操作中最常用的RDD&#xff0c;它是很多程序的構成要素&#xff0c;因為他們提供了并行操作各個鍵或跨界點重新進行數據分組的操作接口。 創建 Spark中有許多中創建鍵值對RDD的方式&#xff0c;其中包括…

無服務器架構_如何開始使用無服務器架構

無服務器架構Traditionally, when you wanted to build a web app or API, you’d usually have to spend significant time and effort managing servers and ensuring your app scales up to handle large request volumes. Serverless is a cloud computing model which let…

WPF中的動畫——(一)基本概念

原文:WPF中的動畫——&#xff08;一&#xff09;基本概念WPF的一個特點就是支持動畫&#xff0c;我們可以非常容易的實現漂亮大方的界面。首先&#xff0c;我們來復習一下動畫的基本概念。計算機中的動畫一般是定格動畫&#xff0c;也稱之為逐幀動畫&#xff0c;它通過每幀不同…

cloud 異步遠程調用_異步遠程工作的意外好處-以及如何擁抱它們

cloud 異步遠程調用In this article, Ill discuss the positive aspects of being a little out of sync with your team.在本文中&#xff0c;我將討論與您的團隊有點不同步的積極方面。 So you’ve started working from home.因此&#xff0c;您已經開始在家工作。 There …

linux 問題一 apt-get install 被 lock

問題&#xff1a; sudo apt-get install vim E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it? 解決&#xff1a; sudo rm /var/cac…

工信部高級軟件工程師_作為新軟件工程師的信

工信部高級軟件工程師Dear Self, 親愛的自我&#xff0c; You just graduated and you are ready to start your career in the IT field. I cannot spoil anything, but I assure you it will be an interesting ride. 您剛剛畢業&#xff0c;就可以開始在IT領域的職業了。 我…