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

2021-10-16 08:12:37 字數 1138 閱讀 2027

c++中的stl中的vector

(stl中的vector每次擴容量時,新的容量都是之前一次的兩倍)

在c/c++中,陣列和指標是相互關聯又有區別的兩個概念。

關聯:當我們宣告乙個陣列時,其陣列的名字也是乙個指標,該指標指向陣列的第乙個元素。我們可以用乙個指標來訪問陣列。

這裡是因為作者的編輯環境是在win64,vscode編譯器下。

data1是乙個陣列,sizeof(data1)是求陣列的大小int型別的常量是佔四個位元組的,5*4=20;

data2宣告為指標,儘管它指向了陣列的第乙個數字,但他的本質任然是乙個指標,在64位作業系統上,對任意指標求sizeof,得到的結果都是8;

在c/c++中,當陣列作為函式的引數進行傳遞時,陣列就自動轉換為同型別的指標。因此,儘管函式getsize的引數data被宣告為陣列,但他會退化為指標,size3的結果為8;

題目1:找出陣列中的重複的數字

在乙個長度為n的陣列裡的所有數字都在0~n-1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

例如:如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。

思路:暴力的解法

1.排序 時間複雜度o(nlogn);

2.雜湊表 空間複雜度o(n);

更好的解決方法:

劍指offer 陣列中重複的數

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。開始我考慮的是,先將陣列排序,然後逐個比較,如果有相等的,...

劍指offer 《陣列中重複的數 》

詳細描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 考查 陣列 雜...

劍指offer之陣列中重複的數

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