leetcode.001


leetcode.001(python3)
2つの数が目標値に等しいことを求めます:先に差を求めて、第2層の循環内は差に等しいかどうかを判断します.
ループの書き方:
for i in range(10):
	print(i)

出力:0から9リストaが与えられた場合:range(len(a))でループリスト長を実現できる回数
一人の大物が書いた最短の実現を見て、ショックを受けて...点までジャンプしました.
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for idx, x in enumerate(nums):
            for idy, y in enumerate(nums[idx+1:],idx+1):
                if x + y == target:
                    return [idx, idy]

ここで簡単に説明すると、前の2行はテーマが与えたものです.2行目:numsは伝達されたListに等しい.targetは伝達された目標値に等しい.returnが返す値はListに与えられる.
3行目:enumerate(nums)、[(0,nums[0]),(1,nums[1],...]を返すと、位置と値が返されます.idxとxにそれぞれ割り当てられます.
4行目:enumerateが返す値はnums[idx+1]から始まり、位置はidx+1から始まります.(0開始ではありません).idyとyに割り当てます.(idx,idyはnumsの下付き、x,yはその下付きの値)
5行目:両数加算が目標値6行目:成立するか否かを判断すると、2箇所の下付き値が返される.
最短コードを最も求めるためでなければ、判定箇所の演算を、第2層サイクル前diff=target-xに繰り上げ、判定条件をif y==diff:に変更する.演算速度が大幅に向上します.
通過しようと思っていたが、大物はもう楽子を探していた.