Skip to content

Commit ffd0040

Browse files
committed
docs(leetcode-26): update variable count and error handling in Python doc
1 parent cdf861b commit ffd0040

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

Algorithm/TwoPointers/leetcode/26. Remove Duplicates from Sorted Array/Sonnet 5/Remove-Duplicates-from-Sorted-Array-Python.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212

1313
- **制約分析**: LeetCodeの制約は`1 <= nums.length <= 3 * 10^4`程度であり、O(n)アルゴリズムであれば余裕を持って制限時間内に収まります。O(n log n)以上の計算量は不要です。
1414
- **最速手法**: ソート済みという性質を使ったTwo-Pointer(二重ポインタ)法がBig-O最適(O(n))です。CPythonではPure Pythonのforループはインタープリタのオーバーヘッドが大きいため、組み込み関数で置き換えられる部分がないか検討しますが、この問題は「前の要素の処理結果に依存する逐次処理」であり、`sum()``map()`のような組み込み関数に単純に置き換えることはできません。
15-
- **メモリ最小化**: 新しいリストや`set`を一切生成せず、`int`型の変数1個だけで完結させるインプレース操作(=新しいオブジェクトを作らず、既存のオブジェクトを直接書き換える操作。メモリ効率が良い)を採用します。
15+
- **メモリ最小化**: 新しいリストや`set`を一切生成せず、`int`型の変数2個(`slow``fast`)だけで完結させるインプレース操作(=新しいオブジェクトを作らず、既存のオブジェクトを直接書き換える操作。メモリ効率が良い)を採用します。
1616
- **CPython最適化**: 組み込みの`len()`のみを使用します。`enumerate()`は「現在の要素の値」しか提供せず、今回は「1つ前に確定した位置」も同時に参照する必要があるため、素直な`range()`ベースのループのほうが適しています。
1717

1818
### 業務開発視点
1919

2020
- **型安全設計**: 引数`nums: List[int]`、戻り値`-> int`という型ヒント(=関数の引数や戻り値に型を注釈として書く仕組み)をそのまま活かし、pylance(=VSCodeで使えるPythonの静的型チェックツール。実行前にバグを検出できる)が型の不整合を実行前に検出できるようにします。
21-
- **エラーハンドリング**: 想定される例外として、①`nums``None`または`list`以外の型で渡されるケース(`TypeError`、②`nums`が空リストのケース(この問題の文脈では正当な入力として`0`を返す)を考慮します。Pythonは動的型付け言語(=変数の型が実行時まで確定しない言語)のため、呼び出し元が誤った型を渡しても実行時までエラーに気づけません。型ヒント + pylanceによる静的チェックと、実行時の`isinstance`チェックを組み合わせることで、コンパイル言語(Java/C++など)に近い安全性を実現します。
21+
- **エラーハンドリング**: 想定される例外として、①`nums``None`の場合に`ValueError``list`以外の型で渡される場合に`TypeError`を投げるケース、②`nums`が空リストのケース(この問題の文脈では正当な入力として`0`を返す)を考慮します。Pythonは動的型付け言語(=変数の型が実行時まで確定しない言語)のため、呼び出し元が誤った型を渡しても実行時までエラーに気づけません。型ヒント + pylanceによる静的チェックと、実行時の`isinstance`チェックを組み合わせることで、コンパイル言語(Java/C++など)に近い安全性を実現します。
2222
- **可読性**: docstring(=関数やクラスの先頭に書く説明文。`"""三重クォート"""`で囲む)・行コメント・意味の明確な変数名(`slowPointer`ではなく`slow`のような簡潔だが文脈で意味が通る名前)を徹底します。
2323

2424
### Python特有分析

0 commit comments

Comments
 (0)