程式設計之美 尋找丟失的數

2021-07-25 14:09:32 字數 475 閱讀 2023

兩個題目:

1、給你n個數,其中有且僅有乙個數出現奇數次,其餘的數都出現偶數次。要求用線性時間常數空間找出出現奇數次的那個數。

2、同樣是n個數,其中有且僅有2個數出現奇數次,其餘都出現偶數次。要求用線性時間常數空間找出出現奇數次的兩個數。

首先知道這個公式就好辦了,a^0 = a,a^a =0;

第一題:

int num = 0

for(遍歷所有的數)

num就是出現一次的數

第二題:

首先同方法1,得到c = a^b。a,b不等,那麼結果不為0。那麼二進位制中肯定有1。可以先找到那個為1的一位,因為是異或那麼可以知道為1的那個位置中,a,b中肯定有乙個是0有乙個是1。

則這裡可以處理為: 假定k是算出來的那個為1的位置上的數。

for(遍歷所有的數) }

這樣num_one就是a,b中的乙個。

加入求出來的是a,則可以再用a^b^a求另外乙個

程式設計之美 尋找發帖「水王」

描述 直接拍照,懶得打字 此題很容易轉換為,在乙個陣列中,有乙個數出現的次數超過了陣列元素個數的一半,請找出這個元素。方法一 對陣列排序進行排序,利用通常的排序方法,複雜度o nlgn 再遍歷一遍陣列,找出那個元素,複雜度為o n 空間複雜度o 1 方法二 空間換時間吧,在開闢乙個陣列,hash對映...

程式設計之美 尋找發帖「水王」

基礎問題 找出發帖數超過帖子總數一半的id.拓展問題 有三人發帖數都超過了帖子總數目n 的1 4 找出他們的 id.我們可以先排序然後找出中間的那個id 但可以考慮避免排序來改進時間複雜度。每次從列表刪除兩個不相同的id 剩餘的相同 id就是找到的 水王 type find type id,int ...

《程式設計之美》 尋找最近點對

問題 給定平面上兩個點的座標,找出距離最近的兩個點。分析與解法 一般思路是蠻力演算法,兩兩求n個點之間的距離並比較,得出最大距離,時間複雜度為o n 2 優化演算法是採用分治的思想,將n個點先按照 x 軸的座標的中值 x mx 平均分為左右兩組,分別求出 xl 和 xr 中的最近點對的距離,因為最近...