我正在做 leetcode 問題 #217:包含重復。檢查答案后,我無法理解代碼的某些部分。問題如下:
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Example 1:
Input: nums = [1,2,3,1]
Output: true
Example 2:
Input: nums = [1,2,3,4]
Output: false
答案如下:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
nums.sort()
for i in range(0,len(nums)-1):
if nums[i] == nums[i 1]:
return True
return False
以下是我的問題:
在我的理解中,回圈range(0,len(nums)-1)允許我們檢查和比較 中的字符num[0:-2],但是最后兩個字符呢?如果我們有numslike ,我們如何比較這兩個字符[2,14,18,22,22]?而對于最后兩行,為什么我們不能直接使用return False而不是使用if...else...結構呢?這里的邏輯是怎么寫的?
感謝任何能澄清我的謎題的人!
uj5u.com熱心網友回復:
您正在比較最后兩個元素。如果i == len(nums)-2,你比較nums[i]有nums[i 1]。這是最后兩個元素。
你不需要if/else. 一旦找到重復項,立即從該函式回傳。因此,到達回圈結束的唯一方法是沒有重復項。
uj5u.com熱心網友回復:
range(start, end, step函式 work from start, start 1, start 2 ... end-1,其中 end 是獨占的,而 start 是包括的。即range(0,100,1)它會像0,1,2,3,4,5......96,97,98,99.
如果您的代碼正在檢查第 i 個字符和第 (i 1) 個字符。所以在最后的索引中ie (len(num)-2),您正在檢查len(num)-2和len(num)-1字符,其中包括最后一個元素。
現在為什么直接回傳false。如果程式到達此陳述句,則考慮所有元素都是不同的。如果找到任何重復項,則將在 for 回圈中找到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315663.html
上一篇:使用VBA在Powerpoint中按字母順序對部分進行排序
下一篇:排序并忽略前導引號
