Leetcode--python--Swordはオファー57を指します

合計がsになる2つの数値

配列と数値sを昇順で入力し、それらの合計が正確にsになるように配列内の2つの数値を見つけます。数値の複数のペアの合計がsに等しい場合は、任意のペアを出力します。

  1. ハッシュテーブルを使用でき、時間と空間の複雑さはすべてO(N)です。
  2. ダブルポインター(ヘッドポインターとテールポインター)、時間計算量O(N)、空間計算量O(1)
  3. 二分法、時間計算量O(logN)、空間計算量O(1)
    ダブルポインター
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

        双指针,从2边到中间
        i, j = 0, len(nums) - 1
        sum_ = nums[i] + nums[j]
        while i < j:
            if sum_ < target:
                i+=1
                sum_ = nums[i] + nums[j]
            if sum_ > target:
                j-=1
                sum_ = nums[i] + nums[j]
            if sum_ == target:
                return([nums[i], nums[j]])

        return([])

おすすめ

転載: blog.csdn.net/AWhiteDongDong/article/details/114179764