Skip to content

Conversation

@Fuminiton
Copy link
Owner

@Fuminiton Fuminiton commented Jul 21, 2025

253. Meeting Rooms II

Given an array of meeting time intervals intervals where intervals[i] = [starti, endi], return the minimum number of conference rooms required.

Example 1:

Input: intervals = [[0,30],[5,10],[15,20]]
Output: 2

Example 2:

Input: intervals = [[7,10],[2,4]]
Output: 1

Constraints:

  • 1 <= intervals.length <= 104
  • 0 <= starti < endi <= 106

- step3: 10分以内に1回もエラーを出さずに3回連続で解く

## step1
開始地点に+1、終了地点に-1を加えると、0~制限時間最大までを1刻みで累積していけば、intervalの期間だけ+1された結果が得られるので、intervalsの全ての要素に対して適用する。
Copy link

Choose a reason for hiding this comment

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

1 <= intervals.length <= 104
0 <= starti < endi <= 106

で、 intervals = [(0, 1000000)] * 10000 の場合、計算ステップが 1010 となり、 TLE するように思います。 LeetCode にはそのような厳しいテストケースが入力されていなかったため、たまたま TLE しなかったのだと思います。
コードを書く前に時間計算量を求め、時間計算量からおおよその計算ステップ数を求め、計算ステップからおおよその処理時間を求め、許容される処理時間以内に処理が終わるかどうかを確認する癖を付けられることをお勧めいたします。
計算ステップ数から処理時間を求める方法については、過去の他の方のコードレビューのコメントをご参照ください。

Copy link
Owner Author

Choose a reason for hiding this comment

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

レビューありがとうございます。

コードを書く前に時間計算量を求め、時間計算量からおおよその計算ステップ数を求め、計算ステップからおおよその処理時間を求め、許容される処理時間以内に処理が終わるかどうかを確認する癖を付けられることをお勧めいたします。

こちら考えはしたのですが、記述が漏れておりました。申し訳ありません。

今回最も時間を要するのが、ミーティングの時間を記録しつつ必要な部屋の数を計算する19-21行目の処理で、O(10^6)となり、1秒程度で終わる処理だと見込んでおりました。

手元の環境で以下を5回実行してみたところ、0.36秒程度で終わることを確認できました。

0.369526147842
0.360316991806
0.363726854324
0.360227108002
0.360241174698
solver = Solution()
test_intervals = []
for i in range(10000):
    test_intervals.append([i, 10*i])

start_time = time.time()
result = solver.minMeetingRooms(test_intervals) 
end_time = time.time()
execution_time = end_time - start_time
print(execution_time) 

Copy link

Choose a reason for hiding this comment

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

コードを読み間違えていました。失礼いたしました。 19~21 行目のコードは range(TIME_LIMITS) 回呼ばれるのですね。それであれば、おっしゃる通りだと思います。

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.

3 participants