劍指offer 15陣列中重複的數字

2021-10-02 07:34:54 字數 661 閱讀 2231

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

掃瞄陣列下標為0開始,如果當前位置的數不等於它的下標則與下表為當前元素的值進行交換

第一次,下標為0,值為2.不等於,與下標為2的數字1進行交換

第二次,下標為0,值為1,不等於,與下標為1的數字3進行交換

第三次,下標為0,值為3,不等於,與下標為3的數字0進行交換

第四次,下標為0,值為0,等於,判斷下乙個

第五次,下標為1,值為1,等於,判斷下乙個

第六次,下擺為2,值為2,等於,判斷下乙個

第七次,下標為3,值為3,等於,判斷下一格

第八次,下標為4,值為2,不等於,與下標為2數字進行交換,此時下標為2的數字為2,所以第乙個重複的數字找到

class

solution

for(

int i=

0;i++i)

swap

(numbers[i]

,numbers[numbers[i]])

;}}return

false;}

};

劍指offer 15 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 這是乙個歸併排序的過程,主要考慮合併兩個有序序列時,計算逆序對。逆序對,前面數字大於後面數字,相當...

劍指offer全套解答 劍指offer 1 5

1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...

劍指offer 15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。反轉鍊錶只需改變鏈結方向,改變方向時需要將原本指向後乙個結點的鏈結方向指向前乙個結點,因此需要記錄下三個結點。include using namespace std struct listnode class solution listnode fron...