项目进度(two)

文章讲述了在项目中进行界面适配和图形界面的准备工作,同时探讨了邻接表实现图的代码和堆实现优先队列的示例。遇到的挑战包括代码运行问题、对邻接矩阵理解的深入和界面设计的完善。此外,还提到了力扣的难题,涉及MajorityChecker类的随机数法和二分查找策略。
摘要由CSDN通过智能技术生成

题外话:今天这个测试,额,一言难尽,确实挺搞心态

  •  项目进度:

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{}()};
};


随机数加二分查找思想,无限逼近,挺流氓的手段,可以采纳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏生十一_Nojambot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值