【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到數組中缺失的數?
如何使用異或(XOR)運算找到數組中缺失的數?
今天給大家分享一篇關於使用XOR(異或)運算找到數組中缺失的數的問題。
在一次Javascript面試中,有這麽一個問題:
假設有一個由0到99(包含99)的整數組成的長度為100的數組。從數組中隨機移除一個元素,得到了一個長度為99的數組,那麽請問如何找到所取出的數字是幾?(假設數組未排序)。
大多數面試者都是按照如下方法解答的:
首先對數組進行排序,然後遍歷一遍數組,檢查數組中相鄰兩項的的差,如果差大於1,則找到缺失的數字。
這是一種有效的算法。但是由於涉及排序,會消耗額外的計算成本。所以問題在於如何在只遍歷一遍數組的情況下找到缺失的數。
第一種解法
計算剩余99個整數的和,以及0-99所有整數的總和,就可以用0-99之間所有整數的總和減去數組中剩余數的和來得到缺少的數。
第二種解法
通過對所有整數[0..99]的進行XOR,然後將得到的結果對剩余數組中所有項的進行異或。
更多詳細內容可以查看原文。今天的文章就分享到這啦。
【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到數組中缺失的數?
相關推薦
【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到陣列中缺失的數?
如何使用異或(XOR)運算找到陣列中缺失的數? 今天給大家分享一篇關於使用XOR(異或)運算找到陣列中缺失的數的問題。 在一次Javascript面試中,有這麼一個問題: 假設有一個由0到99(包含99)的整陣列成的長度為100的陣列。從陣列中隨機移除一個元素,得到了一個長度為99的陣列,那麼
【ShareCode】不錯的技術文章 -- 如何使用異或(XOR)運算找到數組中缺失的數?
upload 取出 排序 png 解法 share 結果 設有 技術 如何使用異或(XOR)運算找到數組中缺失的數? 今天給大家分享一篇關於使用XOR(異或)運算找到數組中缺失的數的問題。 在一次Javascript面試中,有這麽一個問題: 假設有一個由0到99(包含9
對文件異或(xor)解密的方法
log 題目 txt文件 比較 ubi 二進制 python print Coding 這裏對異或做下簡單的解釋,異或是一種2進制的運算,這裏舉個簡單的例子 1^1=0 1^0=1 兩者相同則為0,不同則為1 a的二進制是01100001 b的二進制是01100010 逐位
【LOJ】#114. k 大異或和 -線性基&貪心
傳送門:loj114 題解 注意構造的線性基 a i
【LOJ】#114. k 大異或和 -線性基&貪心
題解 注意構造的線性基aia_iai需要滿足:若第i,ji,ji,j位上都有值,則ai&2j=0a_i\&2^j=0ai&2j=0且aj&
【 專欄 】- 精品技術文章以及原始碼收藏集
精品技術文章以及原始碼收藏集 本專欄針對各個前沿熱門的技術進行分類, 每一類別收藏我讀過的相關的精品文章(個人部落格或者官方文件)以及原始碼,適用於新手上路和高手進階。 主要目的是讓大家能快速找到最值得閱讀的技術資料。
【轉載】設計模式_模板方法(學習)
res bootstrap 重載方法 dex col 算法實現 選擇性 parent abstract 模板方法模式,一般是為了統一子類的算法實現步驟,所使用的一種手段或者說是方式。它在父類中定義一系列算法的步驟,而將具體的實現都推遲到子類。 通常情況下,模板方法模式用
【評分】軟件產品案例分析(團隊)
產品 gpo pos 提交 cnblogs 除了 har 一周 技術 【評分】軟件產品案例分析(團隊) 總結 按時交 - 有分 晚交 - 0分 遲交一周以上 - 倒扣本次作業分數 抄襲 - 倒扣本次作業分數 本次作業贊 日不落戰隊 ,做得相對詳細,大家可前往查看:
【20180311】2018北京集訓測試賽(二)
char 開始 n) source 數組 區間 但是 多次 pan Problem A: 遊戲 題解&反思 模型轉化挺簡單的,但是轉化成“查詢區間內是否有若幹個數組成的集合xor和為0”問題的時候,突然發現不會做……最後只打了20暴力真是涼涼。 其實線性基這個東
【20180318】2018北京集訓測試賽(六)
sum cnblogs 中間 com phi gpo 但是 分享圖片 problem 菜雞滾回石家莊了233 Problem B: 求和 題解&反思: 好久沒寫反演了真刺激 大力推公式就好咯 \[ \sum_{i=1}^{n}\sum_{j=1}^{i}\sum_
【譯】.Net 垃圾回收機制原理(轉)
時有 沒有 finalize 遇到 keyword ren 以及 保留字 rac 上一篇文章介紹了.Net 垃圾回收的基本原理和垃圾回收執行Finalize方法的內部機制;這一篇我們看下弱引用對象,代,多線程垃圾回收,大對象處理以及和垃圾回收相關的性能計數器。 讓我們從弱引
【Java】 Spring 框架初步學習總結(一)簡單實現 IoC 和 AOP
1.0 其中 表示 只需要 第一篇 否則 info fin pojo Spring 是一個開源的設計層面的輕量級框架,Spring 的好處網上有太多,這裏就不在贅述。 IoC 控制反轉和 AOP 面向切面編程是 Spring 的兩個重要特性。 IoC(Inver
【BZOJ】1801 [Ahoi2009]chess 中國象棋(dp)
發現 lin max def %d print class () line 題目 傳送門:QWQ 分析 發現我們關心的不是棋子的位置,我們只關心棋子數量就ok。 首先每行每列最多兩個棋子。這是顯然的。 然後我覺得本題最難的部分就是對行進行討論,蒟蒻
【BZOJ1022】小約翰的遊戲(博弈論)
get pan gist ref pac namespace lib ble () 【BZOJ1022】小約翰的遊戲(博弈論) 題面 BZOJ 題解 \(Anti-SG\)遊戲的模板題目。 #include<iostream> #include<cstdi
洛谷P1919 【模板】A*B Problem升級版(FFT)
targe 空間 break 這就是 bre color show print lex 傳送門 話說FFT該不會真的只能用來做這種板子吧…… 我們把兩個數字的每一位都看作多項式的系數 然後這就是一個多項式乘法 上FFT就好了 然後
【Mybtais】Mybatis 插件 Plugin開發(一)動態代理步步解析
發現 返回 交集 hand proc 攔截 and mybatis invoke 需求: 對原有系統中的方法進行‘攔截’,在方法執行的前後添加新的處理邏輯。 分析: 不是辦法的辦法就是,對原有的每個方法進行修改,添加上新的邏輯;如果需要攔截的方法比較少,選擇此方法到
網路程式設計基礎【day09】:socket接收大資料(五)
本節內容 1、概述 2、socket接收大資料 3、中文字元的坑 一、概述 上篇部落格寫到了,就是說當伺服器傳送至客戶端的資料,大於客戶端設定的資料,則就會把資料服務端發過來的資料剩餘資料存在IO緩衝區中,那我們如何解決這個問題呢? 有的同學就說了: 改大客戶端接收的資料的大小=&
網路程式設計基礎【day10】:我是一個程序(三)
一、引子 我聽說我的祖先們生活在專用計算機裡, 一生只幫助人類做一件事情,比說微積分運算 了、人口統計了 、生成密碼、甚至通過織布機印花 ! 如果你想在這些專用“計算機”上乾點別的事兒,例如安裝個遊戲玩玩, 那是絕對不可能的, 除非你把它拆掉, 然後建一個全新的機器。
【轉載】spring boot 連結 虛擬機器(Linux) redis
原文:https://www.imooc.com/article/43279?block_id=tuijian_wz 前提是你已經安裝redis且支援遠端連線,redis的安裝這裡不再贅述,有需要的可以參考我的另一篇文章:centos 7.3上安裝redis。這裡主要講講如何判斷及設定redis支援遠端連線
【題解】洛谷P2375 [NOI2014] 動物園(KMP)
洛谷P2375:https://www.luogu.org/problemnew/show/P2375 思路 這道題可以說是完全重新整理了本蒟蒻對KMP的理解 感覺對next陣列的理解上升到一個新的高度 首先題目給出了next陣列的定義 關於整個字串 next[len]為字首與字尾相同的最