編程新手!我喜歡它,並且一直在做很多練習題,以幫助我申請明年申請的課程。對於你們中的很多人來說,這可能是一個非常簡單的問題,在此先感謝您的幫助。Ruby - 查找數組中第三大值 - 需要幫助理解方法。
一個列出的問題是要找到在數字數組中的第三個最大的價值。這很容易。
但是,我做的都配備瞭解決編碼的問題,它通常是不使用的內置的方法,所以它很難讓我明白了很多的解決方案。
#my solution
def third_greatest(num)
array = num.sort.reverse
return array[2]
end
我想知道的是while循環如何在他們的解決方案中工作。我似乎無法理解發生了什麼。
#their solution
def third_greatest(nums)
first = nil
second = nil
third = nil
idx = 0
while idx < nums.length
value = nums[idx]
if first == nil || value > first
third = second
second = first
first = value
elsif second == nil || value > second
third = second
second = value
elsif third == nil || value > third
third = value
end
idx += 1
end
return third
end
的冗長溶液跟蹤每次迭代的頂部最高3個的值。在每次迭代時,它根據它所看到的數組中的下一個值重新排列前3位。你應該手動運行一個簡單的例子,你會看到它是如何工作的。 – lurker
這兩種解決方案都可能存在缺陷。還要考慮在數組中有重複值時會發生什麼情況,除非聲明輸入不包含重複項。 – Oka
通過手動追蹤程序是必不可少的技能。拿出一張紙和一支鉛筆(或使用白板或黑板)並解決一個小問題 - 逐行進行,並根據說明記錄或更新變量的值。 – pjs