Conversation
| }) | ||
| } | ||
|
|
||
| result := make([][]int, 0, k) |
There was a problem hiding this comment.
現状の方が変数が短くてGoっぽいのですが、smallestPairs とか smallestIndexPairs とかにすると、何を詰めるのか分かりやすいかなと思いました。
There was a problem hiding this comment.
ありがとうございます。
ご指摘の通り、「何なのか」を表す方が読みやすいです。
戻り値はとりあえず result にしてそのままにしていることが多いので、意識するようにします。
|
特に違和感ありませんでした。 単なる感想ですが、Goだと毎回heapインターフェースを満たすコードを書くのが大変そうだなと思いました。 |
|
|
||
| ### 1. | ||
|
|
||
| とりあえず総当たりで実装した。 |
There was a problem hiding this comment.
実装前に時間計算量は求めましたでしょうか。また、時間計算量から実行時間は推定されましたでしょうか。
実行時間の推定方法が分からない場合は、以下のコメントが参考になると思います。
Yuto729/LeetCode_arai60#16 (comment)
There was a problem hiding this comment.
ありがとうございます。
このときは実行時間までは推定しておりませんでした。
今後、TLEすると考えた場合、一度実行時間の推定まですることを習慣にします。
時間計算量
- num1 の長さ: N、nums2の長さをMとする
- ペアは最大10^10個できる: O(NM)
- ペアごとにヒープ操作: O(log k)
- k 個の最小要素を取り出す
- 取り出すヒープ操作: O(log k)
- 時間計算量は O(NM log k)
実行時間の推定
- go は 10^8 ステップ/秒とする
- N, M の最大値は10^5なので NM は10^10
- k は 10^4
- 10^10 / 10^8 * 4 = 400秒かかる
- TLEする
| return result | ||
| } | ||
|
|
||
| type pair struct { |
There was a problem hiding this comment.
pair は通常 2 つの要素を持つデータ構造だと思います。 IndexesAndSum や IndexPairAndSum はいかがでしょうか?
There was a problem hiding this comment.
ありがとうございます。
ご指摘の通り、余分な要素 sum があるため、それが明示される名前が適切ですね。
今回の問題
Find K Pairs with Smallest Sums - LeetCode
使用言語
Go
次に解く問題
Two Sum - LeetCode