索引超出范圍|Python

我正在嘗試使用python的TwoSum問題,并且嘗試了兩個指針方法,基本上在數(shù)組的開始和結(jié)束處都有一個指針,當(dāng)兩個索引的和大于查找它的值時,將結(jié)束指針減一個索引,如果和小于,則增加開始指針1。我不斷得到一個索引超出范圍的錯誤,想知道為什么會發(fā)生。我瀏覽了我的代碼,一切似乎都有意義,我的測試用例通過了,但當(dāng)我得到這樣一個列表時,它會給我一個超出范圍的錯誤:

  [-1,-2,-3,-4,-5] and the target being -8
  the goal is to output index positions [2,4] using the two pointer technique

這是我的密碼:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

        stack = list()

        n = len(nums)
        j = (len(nums)-1)
        i = 0

        while i < n:

            tempSum = nums[i] + nums[j]

            if tempSum == target:
                stack.append(i)
                stack.append(j)
                break
            if tempSum > target:
                j-=1
            else:
                i+=1
        return stack
? 最佳回答:

錯誤的發(fā)生是由于while循環(huán)中構(gòu)建的邏輯造成的。每當(dāng)tempSum大于目標(biāo)值時,就從j中減去1。當(dāng)使用負(fù)數(shù)時,這意味著循環(huán)將繼續(xù)減少j,直到達(dá)到j=-6,此時將產(chǎn)生一個超出范圍的錯誤。

嘗試在if語句中取tempSumtarget的絕對值,那么在負(fù)數(shù)的情況下也可以進(jìn)行計算。

if abs(tempSum) > abs(target):
    j-=1
else:
    i+=1
主站蜘蛛池模板: 日本一区二区三区在线看| 日韩一区二区三区在线 | 亚洲av片一区二区三区| 熟妇人妻一区二区三区四区| 国产精品久久久久久麻豆一区| 色系一区二区三区四区五区| 亚洲国产精品一区二区久| 亚洲国产成人久久一区久久| 国产精品无码一区二区在线| 久久免费区一区二区三波多野| 日韩伦理一区二区| 亚洲一区二区三区免费观看| 亚洲一区二区三区AV无码| 精品视频在线观看一区二区| 伊人久久精品无码麻豆一区 | 亚洲一区二区久久| 中文字幕一区二区三区免费视频 | 波多野结衣中文一区| 日韩av片无码一区二区不卡电影| 无码乱人伦一区二区亚洲一| 果冻传媒董小宛一区二区| 一区二区三区四区电影视频在线观看 | 精品国产AⅤ一区二区三区4区 | 久久99热狠狠色精品一区| 亚洲一区视频在线播放| 精品一区二区三区视频在线观看| 国产裸体舞一区二区三区| 色婷婷av一区二区三区仙踪林| 亚洲一区二区三区四区视频| 无码人妻一区二区三区在线 | 国产一区二区三区福利| 无码人妻一区二区三区av| 无码人妻精品一区二区三区9厂| 亚洲精品精华液一区二区| 无码人妻一区二区三区兔费| 在线观看一区二区精品视频| 在线不卡一区二区三区日韩| 一区视频在线播放| 中文字幕久久亚洲一区| 日韩电影一区二区三区| 亚洲一区二区三区免费在线观看 |