31. Next Permutation#35
Conversation
| for i in reversed(range(pivot + 1, len(nums))): | ||
| if nums[i] > nums[pivot]: | ||
| nums[i], nums[pivot] = nums[pivot], nums[i] | ||
| return |
There was a problem hiding this comment.
返り値のない関数で return をつけるかどうかは統一した方が良いと思いました
There was a problem hiding this comment.
ありがとうございます。
あまり意識はしていなかったので、lint 設定などを入れてみます。
| Do not return anything, modify nums in-place instead. | ||
| """ | ||
|
|
||
| def search_pivot(nums: List[int]) -> int | None: |
There was a problem hiding this comment.
nextPermutationの内部で定義するなら、nums を引数で与えなくても良いのではないかと思いました
There was a problem hiding this comment.
ありがとうございます。
ここはちょっと考えたところでした。
関数にする際に nums を更新する reverse と swap_pivot_with_successor があり、引数として渡した方が読む時にわかりやすいかなと考えました。
search_pivot は読み取りのみなので、その基準からはクロージャーでもいいのですが、形式を合わせるために引数に入れました。
ここも一貫性を持って実装するようにします。
| nums[i], nums[pivot] = nums[pivot], nums[i] | ||
| return | ||
|
|
||
| pivot = search_pivot(nums) |
There was a problem hiding this comment.
逆転が見つからない時のpivotを-1にすると場合分けが不要になると思いました
There was a problem hiding this comment.
ありがとうございます。ここは確認していませんでした。
早期リターンする場合、それを取り除いても動くか、余計なコストがないかなども考えるようにします。
| length = len(nums) | ||
| pivot = -1 | ||
|
|
||
| for i in reversed(range(len(nums) - 1)): |
There was a problem hiding this comment.
range の戻り値を reverse で反転させるのは、あまり見ないように思います。
for i in range(len(nums) - 1, -1, -1)):と言った書き方をよく見かけるように思います。
There was a problem hiding this comment.
ありがとうございます。
Python の普通の書き方なのか判断できなかったので助かりますmm
上記の記法で書くようにします。
今回の問題
Next Permutation - LeetCode
使用言語
Python