题外话:今天这个测试,额,一言难尽,确实挺搞心态
- 项目进度:
1.适配了界面,学习相关界面的知识,完成了项目的总体说明与思路,进度稍微有点慢了
2.相关的图形界面,以及music准备
3.主要代码实现框架
//邻接表实现图:
#include <iostream>
#include <vector>
using namespace std;
class Graph {
public:
Graph(int V) : V(V), adj_list(V) {}
void add_edge(int u, int v) {
adj_list[u].push_back(v);
adj_list[v].push_back(u);
}
private:
int V;
vector<vector<int>> adj_list;
};
int main() {
Graph g(4);
g.add_edge(0, 1);
g.add_edge(1, 2);
g.add_edge(2, 3);
cout << "Graph with " << g.V << " vertices:\n";
for (int i = 0; i < g.V; i++) {
cout << i << ": ";
for (int j = 0; j < g.adj_list[i].size(); j++) {
cout << g.adj_list[i][j] << " ";
}
cout << endl;
}
return 0;
}
//堆实现优先队列:
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<pair<int, string>, vector<pair<int, string>>, greater<>> pq;
pq.push({5, "A"});
pq.push({3, "B"});
pq.push({4, "C"});
while (!pq.empty()) {
cout << pq.top().second << endl;
pq.pop();
}
return 0;
}
- 一些问题:
代码的跑不起来,可能与vscode的适配有关
还有一些知识点比如邻接矩阵,理解不够,深度不够
相关资料准备,界面设计该完善
今天,力扣的每日一题也是挺变态的
官方给了一个随机数法,直接逼近答案,这个。。。。
class MajorityChecker { public: MajorityChecker(vector<int>& arr): arr(arr) { for (int i = 0; i < arr.size(); ++i) { loc[arr[i]].push_back(i); } } int query(int left, int right, int threshold) { int length = right - left + 1; uniform_int_distribution<int> dis(left, right); for (int i = 0; i < k; ++i) { int x = arr[dis(gen)]; vector<int>& pos = loc[x]; int occ = upper_bound(pos.begin(), pos.end(), right) - lower_bound(pos.begin(), pos.end(), left); if (occ >= threshold) { return x; } else if (occ * 2 >= length) { return -1; } } return -1; } private: static constexpr int k = 20; const vector<int>& arr; unordered_map<int, vector<int>> loc; mt19937 gen{random_device{}()}; };
随机数加二分查找思想,无限逼近,挺流氓的手段,可以采纳