当前位置: 首页 > news >正文

企业手机网站制作新民网站建设价格咨询

企业手机网站制作,新民网站建设价格咨询,网络营销策划方案ppt模板,企业信息查询官网入口cpu vs gpu编程 以下是GPU和CPU编程区别的简洁通俗总结: - 编程模型:CPU是顺序执行,适合复杂逻辑和串行任务;GPU是并行编程,适合大规模数据并行计算。- 编程语言和工具:CPU用C、C等通用语言;…

cpu vs gpu编程

以下是GPU和CPU编程区别的简洁通俗总结:
 

  • - 编程模型:CPU是顺序执行,适合复杂逻辑和串行任务;GPU是并行编程,适合大规模数据并行计算。
  • - 编程语言和工具:CPU用C、C++等通用语言;GPU有CUDA、OpenCL等专门语言及对应开发工具。
  • - 内存管理:CPU内存管理由系统和编译器自动完成;GPU需程序员手动管理内存分配、传输和释放。
  • - 性能优化:CPU优化注重算法、代码和缓存;GPU侧重于提高并行度和减少内存访问延迟。
  • - 适用场景:CPU用于复杂逻辑处理、串行计算等,如操作系统等;GPU用于图形渲染、深度学习等高度并行的计算任务。

构造矩阵  lc2392

class Solution {
private:
    vector<int> empty = {};
    // 返回每个数字(-1)所在的序号,可以是行或列, 如果为空则无效
    vector<int> topoSort(int k, vector<vector<int>>& conditions)
    {
        // 构建一个图: 范围1-k,这里故意留一个0空着,后续计算无需额外-1
        vector<vector<int>> g(k+1);
        // 入度: 范围1-k,这里故意留一个0空着,后续计算无需额外-1
        // vector<int> inDegrees(k+1);
        int inDegrees[k+1];
        memset(inDegrees, 0, sizeof(inDegrees));
        for (vector<int>& condition : conditions)
        {
            g[condition[0]].push_back(condition[1]);
            ++inDegrees[condition[1]];
        }

        // 拓扑排序使用队列
        queue<int> q;
        // 插入入度为0的节点
        for (int i = 1; i <= k; ++i)
        {
            if (inDegrees[i] == 0)
            {
                q.push(i);
            }
        }
        // 计算找到接点的序号:即优先级顺序
        int seq = 0;
        // 返回结果
        vector<int> res(k);
        while (q.size() > 0)
        {
            int curr = q.front();
            q.pop();
            res[curr-1] = seq++;
            for (int next : g[curr])
            {
                if (--inDegrees[next] == 0)
                {
                    q.push(next);
                }
            }
        }

        // 找不到则返回空
        return seq == k ? res : empty;
    }

public:
    vector<vector<int>> buildMatrix(int k, vector<vector<int>>& rowConditions, vector<vector<int>>& colConditions) {
        vector<int> rows = topoSort(k, rowConditions);
        vector<int> cols = topoSort(k, colConditions);
        // 一旦发现有空的情况(即无法满足条件),就可以直接返回空
        if (rows.size() == 0 || cols.size() == 0)
        {
            return {};
        }

        vector<vector<int>> res(k, vector<int>(k));
        for (int i = 0; i < k; ++i)
        {
            // 这里需要额外+1,因为编号是 0~k-1
            res[rows[i]][cols[i]] = i+1;
        }

        return res;
     }
};
 

双指针➕找规律

要改变的最小次数就等于中值,可以通过两端做差再除以2得到最小的变化次数,

然后迭代下去即可,具体实参看代码,时间复杂度O(n)

代码:

class Solution {
public:
    int minOperations(int n) {
        int start = 0;
        int end = n-1;
        int res = 0;
        while(start<end){     //len长奇偶都无关
            res+=((end*2-1)-(start*2-1))/2;
            start++;
            end--;
        }
        return res;
    }
};

算法

1. 计算机编程语言是人类和计算机交流的语言工具。

2. 计算机的本质是状态机,内存里存储的所有数据构成了当前的状态;

3. 数据结构相当于告诉计算机怎么来记录当前的状态,算法相当于告诉计算机怎么根据当前的状态计算出下一个状态。

4. 空间复杂度就是你需要的必需存储的状态最多有多少;

5. 时间复杂度就是从初始状态到达最终状态中间需要多少步,这个和算法强相关,是算法关注的事情;

6. 程序在计算过程中,将问题层层分解之后,会有大量的中间过程数据,这个本质上就是记录问题的中间状态;中间过程数据就是由你设计的数据结 构来承载。

cpp性能优化

 单线程下, 智能指针作为参数传递的时候没有使用引用  每次都拷贝构造 造成了额外的 性能开销 。

只要是个类型变量都可以传参,例如share_ptr

 

错误贪心 lc3458

class Solution {

public:

    bool maxSubstringLength(string s, int k) {

        unordered_map<char,int> hash;

        for(auto c:s)

            hash[c]++;

        int cnt=0;

        for(auto& [a,b]:hash)

        {

            if(b==1) cnt++;

        }

        if(cnt>=k) return true;

        else return false;

    }

};

 

正确贪心:

class Solution {
public:
    bool maxSubstringLength(string s, int K) {
        int n = s.size();

        vector<int> pos[26];
        for (int i = 0; i < n; i++) {
            int c = s[i] - 'a';
            pos[c].push_back(i);
        }

        typedef pair<int, int> pii;
        vector<pii> vec;
        // 枚举每一种子串
        for (int i = 0; i < 26; i++) if (!pos[i].empty()) {
            // 一开始先用这种字母的范围作为子串的范围
            int l = pos[i][0], r = pos[i].back();
            bool flag = true;
            while (flag) {
                flag = false;
                // 检查子串里是否出现了其它字母
                for (int j = 0; j < 26; j++) {
                    int cnt = upper_bound(pos[j].begin(), pos[j].end(), r) - lower_bound(pos[j].begin(), pos[j].end(), l);
                    if (cnt > 0 && cnt < pos[j].size()) {
                        // 有一种字母没有被完全包含,用它的范围更新子串的范围
                        l = min(l, pos[j][0]);
                        r = max(r, pos[j].back());
                        flag = true;
                    }
                }
            }
            // 得到了这种子串里的最短子串
            if (l > 0 || r < n - 1) vec.push_back({r, l});
        }

        // leetcode 435. 无重叠区间
        sort(vec.begin(), vec.end());
        int R = -1, cnt = 0;
        for (pii p : vec) if (p.second > R) {
            R = p.first;
            cnt++;
        }
        return cnt >= K;
    }
};

 

http://www.dtcms.com/a/400872.html

相关文章:

  • 南京电商网站建设商业计划书模板范文
  • 太原网站设计公司沈阳自助模板建站
  • 网站运营周期我要自学网官网
  • 小程序代码做网站经营网站 备案查询
  • 网站没有根目录网站网络营销方案
  • 做好中心网站建设工作免费个人网站建站
  • 网站开发要学WordPress更改数据库连接
  • 做网站放广告网站建设平台选用及分析
  • 如何做网页或网站做专属淘客网站
  • php网站开发视频教程上海到北京火车时刻表查询
  • 十大视频剪辑软件排行榜上海网站建设乐云seo模板中心
  • 网站图片幻灯片效果做响应式网站是不是都用rem
  • 学校网站建设分析漳州建设银行网站首页
  • 网站开发参考资料火车头 wordpress 4.7
  • 汽车配件外贸网站泰安市住房和城乡建设厅网站
  • 制冷型红外热成像在VOC气云成像与泄漏检测的应用
  • 网站建设完成确认书设计腕儿官网
  • 专业的营销型网站定制外贸行业网站推广
  • 贵阳网站建设q.479185700棒wordpress用户模块
  • 建设网站公司那里好华艺网络网站开发
  • 中小企业的网站建设论文网站培训网站建设
  • 杭州亚运村建设指挥部网站上海网站建设搜q.479185700
  • 怎么做捐款网站主题资源网站建设
  • 服装网站建设的宗旨有哪些建设工程施工合同是专属管辖吗
  • 营口沿海开发建设有限公司网站做宣传册模板的网站
  • 凡科建站ps做的图片能做直接做网站吗
  • 郑州网站制作-中国互联好的app制作公司
  • 如何系统性的学习RAG、Agent、MCP?
  • 徽省建设干部学校网站中国航天科工集团有限公司
  • 教育培训网站模板网站维护公司推荐