算法题目复习(0909-0917)

news2024/12/29 10:25:28

1. 连续子序列和

pdd的算法题,根本不记得怎么做

给一个数组,有正数和负数,算出连续子序列的和最大为多少

int maxSubArraySum(vector<int>& nums) {
    int maxSoFar = nums[0];
    int maxEndingHere = nums[0];

    for (size_t i = 1; i < nums.size(); ++i) {
        maxEndingHere = max(nums[i], maxEndingHere + nums[i]);
        maxSoFar = max(maxSoFar, maxEndingHere);
    }

    return maxSoFar;
}

int main() {
    std::vector<int> nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
    int maxSum = maxSubArraySum(nums);
    std::cout << "Maximum subarray sum is " << maxSum << std::endl;
    return 0;
}

Kadane's算法

太神了。。主要灵魂是:要么继续当前子数组,要么从当前位置开始一个新的数组(就是说如果过去的数加上i<i,就没必要用过去的数了)

2. 给一个字符串,只包含A和B两种字符,判断这个数组包含AB数量相等的连续子序列最长是多少,应该怎么做用c++

用一个哈希表记录前缀和

主要我做的时候想到了前缀和,但是不知道怎么找一个数组两个相等的数之差最大是多少

它的算法就是用哈希表存下来(idx,val),如果下一个val在哈希表中存在,就更新idx之差最大。这样On就能算了。

3 最长上升子序列

没想到这题用动态规划都得n平方,好难

思路就是dp[i] 是以i结尾的,前面任意选的子序列,dp[j]是以j结尾的子序列,要从j转移到i,就意味着nums[i]肯定大于nums[j], 那就找比i小的所有j里,dp[j]最大的进行转移,+1

    int lengthOfLIS(vector<int>& nums) {
        int n = nums.size();
        vector<int> dp(n+1);
        dp[0] = 1;
        for(int i =1;i<n;i++){
            int maxj = 0;
            for(int j =0;j<i;j++){
                if(nums[j] < nums[i])
                    maxj = max(maxj, dp[j]);
            }
            dp[i] = maxj+1;
        }
        int res = 0;
        for(int i =0;i<n;i++){
            res = max(res, dp[i]);
        }
        return res;

4. 求质数

主要是求最小公约数,这个循环的话循环到sqrt(x)就行

或者先弄一个质数列表,这个列表得到的方式是:埃拉托斯特尼筛法

跟我想的差不多,用一个列表保存

还有!整除不要用/,用//

5. 搜索二维矩阵二

    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(), n = matrix[0].size();
        int x = 0, y = n-1;
        while(x<m && y >= 0){
            if(matrix[x][y] == target){
                return true;
            }else if(matrix[x][y] > target){
                y --;
            }else{
                x++;
            }
        }
        return false;
    }

这题是z字形查找,就是从右上角的点开始查找,每次能排除一行或者一列

6. 图论的题

一直没搞清什么最短路那几个问题:

给一堆点,找到联通所有点的最短路

prim算法:找到n-1条边。每次选距离生成树最近的节点,将该点加入生成树,更新非生成树节点到生成树的距离。(初始化一个minDist数组,用来记录每个节点到生成树的最小距离)

初始化为每个点到第一个点的最小距离,然后迭代,它的重点在于选点,比较适合稠密图,复杂度是on平方

Krustral算法:是我自己想的那种并查集思路。对所有边按权值从大到小排列,判断选中的边的两个端点是否在一个并查集内,如果不在,就加入到一个。

djistra算法 

7. 随机链表的复制

就是给一个链表深拷贝为另一个链表,其中每个节点都有一个随机指针,指向任意一个节点

做法就是:定义两个old->new,new->old节点的映射map,第一次遍历创建新节点,并维护映射。第二次遍历根据老节点的random找到对应的新节点来设置新节点的random。

 Node* copyRandomList(Node* head) {
        unordered_map<Node*,Node*> mp;
        Node * head2 = new Node(0);
        Node * cur2 = head2;
        Node * cur = head;
        while(cur!=nullptr){
            cur2->next = new Node (cur->val);
            cur2 =cur2->next;
            mp[cur] = cur2;
            cur = cur->next;
        } 
        cur = head, cur2 = head2->next;
        while(cur!=nullptr){
            cur2->random = mp[cur->random];
            cur = cur->next;
            cur2 = cur2->next;
        }
        return head2->next;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2143543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

说说几款耳机

从前&#xff0c;大约在戴森推出他们那款奇特的发明——戴森耳机与空气净化器组合一年后&#xff0c;人们仍对这个奇怪的产品感到困惑。这款穿戴式空气净化耳机更像是一个实验&#xff0c;缺乏实际用途。回想起那时的评测&#xff0c;大家一致认为这是有史以来最无意义的产品之…

IDEA 2024.3 EAP新特征早览!

0 前言 IntelliJ IDEA 2024.3 第一个 EAP 版本已发布&#xff0c;提前体验 下一个重大版本的一部分改进。 持续关注 EAP 更新&#xff0c;未来几周内将推出更多 IntelliJ IDEA 新功能。尝试这些新功能&#xff0c;分享您的反馈&#xff0c;共同完善 IDE。 1 AI 助手 1.1 内…

Web3入门指南:从基础概念到实际应用

Web3&#xff0c;即“去中心化的第三代互联网”&#xff0c;正在逐步改变我们对互联网的传统认知。从最初的静态网页&#xff08;Web1.0&#xff09;到互动平台和社交媒体为主的互联网&#xff08;Web2.0&#xff09;&#xff0c;Web3的目标是让用户重新掌握对数据和数字资产的…

比特币10年价格数据(2014-2024)分析(基础)

数据入口&#xff1a;【每周挑战】比特币10年价格数据可视化和量化分析 - Heywhale.com 本数据集包含 2014 - 2024 的比特币美元价格数据&#xff0c;具体包含比特币每日的开盘价、最高价、最低价、收盘价以及成交量等关键信息。数据说明如下&#xff1a; 字段说明Date日期&a…

PMP--一模--解题--151-160

文章目录 11.风险管理--规划风险应对--机会应对策略--上报151、 [单选] 早在执行阶段&#xff0c;项目经理就发现&#xff0c;事业环境因素&#xff08;EEF&#xff09;最近发生的变化将使实施成本大幅减少&#xff0c;而且还将缩减项目进度计划&#xff0c;项目经理该如何应对…

《沈阳体育学院学报》

《沈阳体育学院学报》创刊于1982年&#xff0c;是由沈阳体育学院主办&#xff0c;面向国内外公开发行的体育类学术期刊&#xff1b;国际标准刊号为ISSN 1004-0560&#xff0c;国内刊号为CN 21-1081/G8&#xff1b;双月刊&#xff0c;单月中旬出版。 《沈阳体育学院学报》是中文…

Django_Vue3_ElementUI_Release_004_使用nginx部署

1. nginx安装配置 1.1 下载nginx Download nginx 1.2 测试一下 1.3 进入nginx用命令操作 2. 部署 2.1 前端部署 2.1.1 修改nginx监听配置 …conf/nginx.conf http {... # 这里不进行修改server {listen 8010; # 监听 80 端口server_name 192.168.10.24; # 输入服务器 ip…

java进销存系统源码:管店云进销存解决方案

在当今数字化转型的大背景下&#xff0c;企业对高效、可靠的进销存管理系统的需求日益增长。Java作为一种广泛使用的编程语言&#xff0c;以其成熟的技术栈和强大的生态系统&#xff0c;成为了开发高性能进销存系统的首选语言之一。本文将介绍一款基于Java进销存系统源码的“管…

[乱码]确保命令行窗口与主流集成开发环境(IDE)统一采用UTF-8编码,以规避乱码问题

文章目录 一、前言二、命令行窗口修改编码为UTF-8三、Visual Studio 2022修改编码为UTF-8四、Eclipse修改编码为UTF-8五、DevCPP修改编码为UTF-8六、Sublime Text修改编码为UTF-8七、PyCharm、IDEA、VS Code及Python自带解释器修改编码为UTF-8 一、前言 在学习的征途中&#x…

AG32 MCU与内置FPGA的FLASH空间如何划分

AG32与内置FPGA的FLASH空间如何划分 关于芯片flash 大小&#xff1a; 不管所选型号的flash 是多大&#xff0c;请注意最后100K 是留给fpga 使用的。 如果使用的芯片是256K 的flash 空间&#xff0c;那么就是156K 程序100K fpga&#xff0c;用户程序不能 超过156K。如果超过1…

网络流之最大流(dinic算法模板+模板题)

dinic算法&#xff1a;时间复杂度O(), n 代表点的个数&#xff0c;m 代表边的个数。 const int N1e55; struct Edge{int to,w,next; }edge[N*2];//双向边 int head[N],d[N],cur[N]; int n,m,s,t,cnt1;// 从 2 , 3 开始配对 void add(int u,int v,int w){edge[cnt]{v,w,head[…

VirtualBox 7.1.0 发布下载 - 开源跨平台虚拟化软件

VirtualBox 7.1.0 (macOS, Linux, Windows) - 开源跨平台虚拟化软件 Oracle VM VirtualBox 7 请访问原文链接&#xff1a;https://sysin.org/blog/virtualbox-7/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2024 年 9 月 …

软考中级软件设计师——数据结构与算法基础学习笔记

软考中级软件设计师——数据结构与算法基本概念 什么是数据数据元素、数据项数据结构逻辑结构物理结构&#xff08;存储结构&#xff09; 算法什么是算法五个特性算法效率的度量时间复杂度空间复杂度 什么是数据 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所…

树莓派提示:error: externally-managed-environment 树莓派安装虚拟环境,树莓派flask报错

错误信息 raspberryraspberrypi:~ $ pip install flask error: externally-managed-environment脳 This environment is externally managed 鈺扳攢> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to i…

C语言 | Leetcode C语言接雨水II

题目&#xff1a; 题解&#xff1a; typedef struct{int row;int column;int height; } Element;struct Pri_Queue; typedef struct Pri_Queue *P_Pri_Queue; typedef Element Datatype;struct Pri_Queue{int n;Datatype *pri_qu; };/*优先队列插入*/ P_Pri_Queue add_pri_que…

硬件工程师笔试面试——开关

目录 11、开关 11.1 基础 开关原理图 开关实物图 11.1.1 概念 11.1.2 常见的开关类型及其应用 11.2 相关问题 11.2.1 开关的工作原理是什么? 11.2.2 在设计一个电子系统时,如何选择最适合的开关类型? 11.2.3 不同类型的开关在实际应用中有哪些优势和局限性? 11.…

自己建网站怎么建

自己建立一个网站可能听起来有点复杂&#xff0c;但实际上&#xff0c;有很多简单且免费的方法可以实现。下面将介绍一些基本步骤&#xff0c;帮助你开始自己建立一个网站。 首先&#xff0c;你需要明确你的网站目的是什么。是个人博客、商业网站&#xff0c;还是其他类型的网…

设计模式 组合模式(Composite Pattern)

组合模式简绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端可以用一致的方式处理单个对象和组合对象。这样&#xff0c;可以在不知道对象具体类型的条…

如何在webots中搭建一个履带机器人

前期准备 下载webotswebots基本知识 a. 官方文档:Webots documentation: Track b. B站教程:webots-超详细入门教程(2020)_哔哩哔哩_bilibili搭建流程 搭建履带机器人主要使用到了webots中的track节点,这个节点是专门用来定义履带的相关属性,模拟履带运动的 首先,创建一个…

MyBatis操作数据库-XML实现

目录 1.MyBatis的简单介绍 2.MyBatis操作数据库的步骤 2.1 添加依赖 2.2 配置文件 2.3 写持久层代码 2.4 方法测试 3.MyBatis操作数据库(增删查改) 3.1 CRUD标签 3.2 参数传递 3.3 Insert-新增 3.4 Delete-删除 3.5 Update-修改 3.6 Select-查询(映射问题) 1.MyB…