Conversation
| print(nums) # [2, 7, 11, 15] | ||
| print(hashmap) # {15: 3, 2: 0, 11: 2, 7: 1} |
| for j in range(i+1, len(nums)): | ||
| if nums[i]+nums[j]==target: | ||
| return [i,j] | ||
| break |
| for j in range(i+1, len(nums)): | ||
| if nums[i]+nums[j]==target: | ||
| return [i,j] |
There was a problem hiding this comment.
演算子の間にはスペースを空けることをお勧めします
https://peps.python.org/pep-0008/#whitespace-in-expressions-and-statements
| for i in range(len(nums)): | ||
| hashmap[nums[i]] = i | ||
| print(nums) # [2, 7, 11, 15] | ||
| print(hashmap) # {15: 3, 2: 0, 11: 2, 7: 1} | ||
| for i in range(len(nums)): | ||
| complement = target - nums[i] | ||
| if complement in hashmap and hashmap[complement] != i: # dict[key]=value | ||
| return [i, hashmap[complement]] | ||
| return [] |
There was a problem hiding this comment.
二つforループ書くのではなく以下のようにすれば一つのforループで簡潔できます
num_to_index = {}
for i in range(len(nums)):
complement = target - nums[i]
if complement in num_to_index:
return [num_to_index[complement], i]
num_to_index[nums[i], i]
# NOTE 余力があるなら異常な入力を想定してraiseする
There was a problem hiding this comment.
公式解答に倣ってforループ2つ書いたのですが,こちらのほうが簡潔ですね.ありがとうございます.
|
ウェブフックの設定ができていないかもしれません。練習会参加マニュアルをご参照ください。 コメント集やdiscordで他の人が書いたコードを(大変ではない程度に)読むことも勉強になるのでおすすめです。 |
| class Solution(object): | ||
| def twoSum(self, nums, target): | ||
| """ | ||
| :type nums: List[int] |
|
|
||
| # Step 3 | ||
| 何も見ないで実装 | ||
| ```python |
There was a problem hiding this comment.
Python2 になっていますか、Python3 になっていますか。3にしたほうがいいでしょう。
There was a problem hiding this comment.
ご指摘ありがとうございます.python2になっているようでしたので,次回からpython3にします.
| return [i, hashmap[complement]] | ||
| return [] | ||
| ``` | ||
| 実行時間は5ms同じコードなのに実行時間が違う.他に見るべき指標があるかも. |
There was a problem hiding this comment.
あまりその実行時間はあてになりません。また統計ノイズが大きいので時間を計測するときにはしたのようにします。
https://docs.google.com/document/d/11HV35ADPo9QxJOpJQ24FcZvtvioli770WWdZZDaLOfg/edit?tab=t.0#heading=h.isflp7vsmzk2
一方で、実行時間がどれくらい問題になるのかは考えるべきです。
|
|
||
|
|
||
| # Step 2 | ||
| PRや公式解答を参照. |
There was a problem hiding this comment.
LeetCode 公式は、問題があるコードが多いので、分かっていないならば参考にしないほうがいいです。
また、何かを参考にしたらそれについてのリンクを張っておきましょう。
| :type target: int | ||
| :rtype: List[int] | ||
| """ | ||
| hashmap = {} |
There was a problem hiding this comment.
意味に基づいて変数名をつけてあげるとわかりやすくなると思います。例えば num_to_index などがありうると思います。
| :rtype: List[int] | ||
| """ | ||
| hashmap = {} | ||
| for i in range(len(nums)): |
There was a problem hiding this comment.
好みかもしれませんが、enumerate を使うこともできますね。
https://docs.python.org/3.13/library/functions.html#enumerate
| return [i, hashmap[complement]] | ||
| return [] | ||
| ``` | ||
| 実行時間は5ms同じコードなのに実行時間が違う.他に見るべき指標があるかも. |
There was a problem hiding this comment.
LeetCode 上の実行時間はブレが大きいらしいので目安程度と思った方が良さそうです。
No description provided.