Skip to content

1. Two Sum#11

Open
tarinaihitori wants to merge 2 commits into
mainfrom
1-two-sum
Open

1. Two Sum#11
tarinaihitori wants to merge 2 commits into
mainfrom
1-two-sum

Conversation

@tarinaihitori
Copy link
Copy Markdown
Owner

Comment thread 1. Two Sum.md
two_sum = nums[i] + nums[j]
if target == two_sum:
return [i, j]
raise Exception("No Solution Found")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://docs.python.org/3/library/exceptions.html#bltin-exceptions
Built-in Exceptions を一通り見ておきましょう。
この文脈で、一番近い Exception はどれかも考えてみましょう。

ここに3つ大事なことがあります。

  1. 「公式ドキュメントに目を通す」という行動を取りたくなること自体が大事です。つまり、結果ではなくて欲求を評価しましょう。
  2. 何を使うかではなくて、何は不適切であると感じたかも大事です。つまり、結果ではなくて過程を評価しましょう。
  3. 最終的にはエンジニアリングという目的との関係から評価します。つまり、結果ではなくて目的を評価しましょう。

これは、練習すべてに通じることかと思います。

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

共有ありがとうございます。組み込み例外は一通り確認します。
3つの大事なことは自分の一番できていない箇所なので、今後も意識していきます。

Copy link
Copy Markdown

@hayashi-ay hayashi-ay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

良いと思います。

(特にコメントすることがないので)もし配列がソート済みだとすると、他の解法など思いつきますでしょうか。
https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/

@tarinaihitori
Copy link
Copy Markdown
Owner Author

@hayashi-ay

特にコメントすることがないので)もし配列がソート済みだとすると、他の解法など思いつきますでしょうか。

5分考えてみたのですが、ハッシュテーブルを使う方法しか思いつきませんでした。
問題のURLを見たら定数の追加空間という制約があるので、ポインターを使うのかなという仮説は立ちました。

@hayashi-ay
Copy link
Copy Markdown

ポインターを使うのかなという仮説は立ちました。

そうです。左右の両端から試していって範囲を狭めていけます。たとえば以下のような配列があるとして、

1, 3, 5, 10, 15

1 + 15の合計がtargetより小さい場合は(1, 10), (1, 5), (1, 3)の全ての1を含む残りの組についてもtargetより小さくなります。なので、1を含むペアはもう調べなくて良いので、最低の数字は3として左端のポインタを1つ右に進めます。1 + 15の合計がtargetより大きい場合も同様なことが言えるので右端のポインタを1つ左に進めます。このように範囲を両端から狭めていくと定数メモリで答えのペアを求めることができます。

@hroc135
Copy link
Copy Markdown

hroc135 commented Nov 14, 2024

いいと思いました

Comment thread 1. Two Sum.md
def twoSum(self, nums: List[int], target: int) -> List[int]:
num_to_indexes = {}
for index, num in enumerate(nums):
difference = target - num
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

補数であるということもできるかと思います。なのでcomplementという変数名を使うのもありかなと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants