lc1337
++pair存入,lambda sort后取出++,最开始想用hash,写一半感觉写复杂了
class Solution {
public:
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
int m = mat.size();
int n = mat0.size();
vector<pair<int,int>>ans;
//统计每一行的军人数量以及索引
for(int i = 0; i < m; i++){
int sum = accumulate(mati.begin(), mati.end(), 0);
ans.push_back({sum, i});
}
//按照军人数量优先排序,其次是索引排序
sort(ans.begin(), ans.end(), \[\](pair<int,int>&a, pair<int,int>&b){
if(a.first == b.first){
return a.second < b.second;
}
return a.first < b.first;
});
//统计k个索引
vector<int>cnt;
for(int i = 0; i < k; i++){
cnt.push_back(ansi.second);
}
return cnt;
}
};
lc743.网络延迟时间
dijkstra=bfs+贪心

class Solution {
public:
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
vector<vector<int>> g(n, vector<int>(n, INT_MAX / 2)); // 邻接矩阵
for (auto& t : times) {
gt\[0 - 1]t\[1 - 1] = t2;
}
vector<int> dis(n, INT_MAX / 2), done(n);
disk - 1 = 0;
while (true) {
int x = -1;
for (int i = 0; i < n; i++) {
if (!donei && (x < 0 || disi < disx)) {
x = i;
}
}
if (x < 0) {
return ranges::max(dis);
}
if (disx == INT_MAX / 2) { // 有节点无法到达
return -1;
}
donex = true; // 最短路长度已确定(无法变得更小)
for (int y = 0; y < n; y++) {
// 更新 x 的邻居的最短路
disy = min(disy, disx + gxy);
}
}
}
};
1353.优先队列
priority_queue<int, vector<int>, greater<>> pq;

class Solution {
public:
int maxEvents(vector<vector<int>>& events) {
int mx = 0;
for (auto& e : events) {
mx = max(mx, e1);
}
++// 按照开始时间分组
vector<vector<int>> groups(mx + 1);
for (auto& e : events) {
groupse\[0].push_back(e1);
}++
int ans = 0;
++priority_queue<int, vector<int>, greater<>> pq;++
for (int i = 0; i <= mx; i++) {
/++/ 删除过期会议++
while (!pq.empty() && pq.top() < i) {
pq.pop();
}
/++/ 新增可以参加的会议++
for (int end_day : groupsi) {
pq.push(end_day);
}
// ++参加一个结束时间最早的会议++
if (!pq.empty()) {
ans++;
pq.pop();
}
}
return ans;
}
};
螺旋数组的遍历

通过l t r b 控制遍历螺旋
class Solution {
public:
vector<int> spiralArray(vector<vector<int>>& array)
{
if (array.empty()) return {};
int l = 0, r = array0.size() - 1, t = 0, b = array.size() - 1;
vector<int> res;
while(true)
{
for (int i = l; i <= r; i++) res.push_back(arrayti); // left to right
++if (++t > b) break;++
for (int i = t; i <= b; i++) res.push_back(arrayir); // top to bottom
++if (l > --r) break;++
for (int i = r; i >= l; i--) res.push_back(arraybi); // right to left
++if (t > --b) break;++
for (int i = b; i >= t; i--) res.push_back(arrayil); // bottom to top
++if (++l > r) break;++
}
return res;
}
};
hash冲突与解决



rust
所有权,包管理,高性能,0开销抽象,内存安全,无谓并发,主要treat优于继承,实现自定义