描述思路在陣列中找到第二大的數。
注意:可以假定至少有兩個數字,第二大的數是指降序陣列中第二個數字。
樣例
example 1:
input: [1,3,2,4]
output: 3
example 2:
input: [1,1,2,2]
output: 2
步驟
iii. 返回次大;
def
secondmax
(nums:
list):
# method 1
nums.sort(reverse =
true
)return nums[1]
# method 2
fmax,smax = nums[0]
,nums[1]
lens =
len(nums)
for i in
range(1
,lens)
:#數值大於最大值,需同時更新最大和次大
if nums[i]
>= fmax:
smax = fmax
fmax = nums[i]
#數值僅大於次大值,僅需更新次大
elif nums[i]
> smax:
smax = nums[i]
return smax
Lintcode演算法練習 110 最小路徑和
描述給定乙個只含非負整數的m n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。樣例 example 1 input 1,3,1 1,5,1 4,2,1 output 7 example 2 input 1,3,2 output 6 思路利用動態規劃思想解決問題,動態規劃的思想是將乙個問題分...
lintcode練習 490 棧集
假如你有一堆的盤子。如果你堆得太高的話,就可能會垮掉。所以,在真實的生活中,如果盤子疊到一定高度,你會重新開始堆新的一堆盤子。實現這樣的乙個資料結構,我們稱之為棧集,來模擬這個過程。這個棧集包含若干個棧 可以理解為若干堆的盤子 如果乙個棧滿了,就需要新建乙個棧來裝新加入的項。你需要實現棧集的兩個方法...
lintcode練習 156 合併區間
給出若干閉合區間,合併所有重疊的部分。您在真實的面試中是否遇到過這個題?是 given intervals merged intervals 1,3 1,6 2,6 8,10 8,10 15,18 15,18 o n log n 的時間和 o 1 的額外空間。實現 思路 先對列表按照start進行排...