• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

アレイデータ(two pointers)

date: 2021-03-04 excerpt: アレイデータ(two pointers)について

tag: algorithmdata structureデータ構造array


アレイデータ(two pinters)について

概要

  • 2回以上の要素の探索が必要な時、2回ループを回すと、O(n^2)になってしまう
  • 2つのポインタ(カーソル)を利用して、O(n)に計算量を落とす工夫の総称をtwo pointersという

具体例

ソート済みのアレイで2つの要素の足し算が特定の値になるか判定

  • 左端、右端から探索を初めて条件に応じて1stepずつ適切な方向にずらすイメージ
def solve(numbers, target):
    nums = numbers
    l, r = 0, len(nums)-1
    while 1:
        tmp = nums[l] + nums[r]
        if tmp == target:
            return True
        elif tmp > target:
            r -= 1
        elif tmp < target:
            l += 1
    return False

assert solve(numbers = [2,7,11,15], target = 9)

参考

  • 167. Two Sum II - Input Array Is Sorted/LeetCode


algorithmdata structureデータ構造array Share Tweet