Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions 252/252.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
ここに書いてあるコードはLeetCodeの実行環境上で試せてないので動かないコードがあったら教えてください。
(一応LLMに聞いて想定通り動くだろうという回答があったコードではあります)

## 何も見ずに解いてみる

```cpp
class Solution {
public:
bool canAttendMeetings(vector<vector<int>>& intervals) {
vector<pair<int, bool>> points;
for (vector<int>& interval : intervals) {
points.emplace_back(interval[0], true);
points.emplace_back(interval[1], false);
}
sort(points.begin(), points.end());
bool attending = false;
for (pair<int, bool>& point : points) {
bool is_start = point.second;
if (is_start && attending) {
return false;
}
attending = is_start;
}
return true;
}
};
```

## 他の人のコードを見てみる

https://github.com/tokuhirat/LeetCode/pull/55/files
https://github.com/olsen-blue/Arai60/pull/56/files
https://github.com/ryosuketc/leetcode_arai60/pull/55/files
https://github.com/Ryotaro25/leetcode_first60/pull/60/files

自分のコードでもペアを入れるのではなくmapで実装すればもう少し見通しが良くなったかも。
pairのsortがfirstとsecondの辞書順になっていて、さらにtrue > falseであるというのが前提になっているのが良くないかも。
せめてコメントがないとわかりにくいような気がする。

std::vectorに対するstd::sortは要素を始めから見ていって辞書順に並べ替えるらしい。
(1要素目が同じだったら2要素目、2要素目が同じだったら3要素目・・・みたいな感じ)

Choose a reason for hiding this comment

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

Copy link
Owner Author

@potrue potrue Aug 24, 2025

Choose a reason for hiding this comment

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

あ、そちらの方が正確ですね。ありがとうございます。


## 最終コード

sortで中身変えちゃうので値渡しにしました

```cpp
class Solution {
public:
bool canAttendMeetings(vector<vector<int>> intervals) {
sort(intervals.begin(), intervals.end());
for (int i = 1; i < intervals.size(); ++i) {
if (intervals[i][0] < intervals[i-1][1]) {
return false;
}
}
return true;
}
};
```