拼多多面試 找出陣列中重複的數 缺失的第乙個正數

2021-10-09 10:00:46 字數 1305 閱讀 9777

給定乙個包含n個數的陣列,其數字在1到n之間(包括1和n),可知至少存在1個重複的數,且每個重複的數隻重複1次,找出重複的數。

要求,時間複雜度o(n),空間複雜度o(1)。

思路:

將陣列進行排序,即nums[i]=i,由於這裡的數範圍是1-n,所以對應儲存為 nums[i]=i+1,例如nums[0]=1,nums[1]=2…

最後對陣列進行遍歷,找出nums[i] != i+1的nums[i]。需要在排序完之後遍歷,不能在排序的時候遍歷,容易把乙個數多次新增到結果集中。

**:

vector<

int>

findsecondvalue

(vector<

int> nums)

else

}else

}for

(int i =

0; i < nums.

size()

; i++

)//最後一次遍歷,找出重複的數

}return res;

}int

main()

; vector<

int> res=

findsecondvalue

( nums)

;return0;

}

給你乙個未排序的整數陣列,請你找出其中沒有出現的最小的正整數。

示例 1:

輸入: [1,2,0]

輸出: 3

示例 2:

輸入: [3,4,-1,1]

輸出: 2

示例 3:

輸入: [7,8,9,11,12]

輸出: 1

思路:

同上題相同。

**:

int

firstmissingpositive

(vector<

int>

& nums)

if(nums[i]

!=i+1)

else

}else

}int res=nums.

size()

+1;//若剛好從前到後都有,則返回n+1

for(

int i=

0;isize()

;i++)}

return res;

}

18年拼多多面試 陣列「山谷」

陣列裡的 山谷 是指乙個陣列a彙總的連續子陣列b滿足一下條件 1 b.length 3 2 存在滿足 0b 1 b i 1 b i 給定乙個陣列a,找出陣列a裡的最長 山谷 b的長度,如果沒有,則輸出0。輸入描述 每個測試輸入包含乙個測試用例,即給出整形陣列a,這裡保證0 a.length 1000...

找出陣列重複的數

1 在乙個長度為 n 的陣列裡的所有數字都在 0 n 1 的範圍內,找出任意乙個重複的數。簡明思路 按照題目要求,如果這個陣列裡面的數恰好沒有重複的數,則陣列下標跟對應的值相等。否則,當掃瞄到下標為 i 的數字時,比較這個下標的值 m 是不是等於 i 如果是,說明這個值就在它對應的下標下,繼續掃瞄 ...

287 找出陣列中重複的數

交換法主要思想是通過交換陣列元素,使得陣列上的元素在正確的位置上。遍歷陣列,如果第 i 位上的元素不是 i 1,那麼一直交換第 i 位和 nums i 1 位置上的元素。public static list test1 int nums list list newlist for int i 0 i...