力扣题目训练(5)

news2024/11/15 11:02:04

2024年1月29日力扣题目训练

  • 2024年1月29日力扣题目训练
    • 345. 反转字符串中的元音字母
    • 349. 两个数组的交集
    • 350. 两个数组的交集 II
    • 96. 不同的二叉搜索树
    • 97. 交错字符串
    • 44. 通配符匹配

2024年1月29日力扣题目训练

2024年1月29日第五天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道,今天总算把进度赶上了,虽然有很多不会的,但是总体还是有进步的。

345. 反转字符串中的元音字母

链接: 反转元音字母
难度: 简单
题目:

题目描述

运行示例:
运行示例

思路:
与之前的反转字符串类似,无非是这里需要先记录下元音字母位置再反转。
代码:

class Solution {
public:
    string reverseVowels(string s) {
        vector<int> res;
        for(int i = 0; i < s.size(); i++){
            if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u'||
            s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U'){
                res.push_back(i);
            }
        }
        int n = res.size();
        for(int i = 0; i <  n/ 2; i++){
            char c = s[res[i]];
            s[res[i]] = s[res[n-i-1]];
            s[res[n-i-1]] = c;
        }
        return s;
    }
};

349. 两个数组的交集

链接: 数组交集
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
利用哈希表存储在第一个数组中出现的数字,然后和第二个数组中的元素进行判断。
代码:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int,int> map;
        vector<int> ans;
        for(int i = 0; i < nums1.size(); i++){
            if(map[nums1[i]] == 0)  map[nums1[i]] = 1;
        }
        for(int i = 0; i < nums2.size(); i++){
            if(map[nums2[i]] == 1 && !(std::find(ans.begin(), ans.end(), nums2[i]) != ans.end()))   ans.push_back(nums2[i]);
        }
        return ans;
    }
};

350. 两个数组的交集 II

链接: 数组的交集出现次数
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
这道题与上一道题有相似之处,我都是用的哈希表,但是这道题题目我用了两个哈希表分别记录两个数组中元素出现的次数,然后进行对比得到结果。
官方的方法是用一个哈希表,通过改变哈希表中元素出现的次数的值来得到结果。
在这里插入图片描述
代码:

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int,int> map1,map2;
        vector<int> ans;
        for(int i = 0; i < nums1.size(); i++){
            map1[nums1[i]]++;
        }
        for(int i = 0; i < nums2.size(); i++){
            map2[nums2[i]]++;
        }
        for(auto p:map1){
            int key = p.first;
            int count = p.second;
            if(map2[key] != 0){
                int n = count > map2[key]?map2[key]:count;
                cout<<n<<endl;
                for(int i = 0; i < n; i++){
                    ans.push_back(key);
                }
            }
        }
        return ans;
    }
};

官方代码

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        if (nums1.size() > nums2.size()) {
            return intersect(nums2, nums1);
        }
        unordered_map <int, int> map;
        for(int num: nums1){
            map[num]++;
        }
        vector<int> intersection;
        for(int num:nums2){
            if(map[num]){
                intersection.push_back(num);
                map[num]--;
                if(map[num] == 0){
                    map.erase(num);
                }
            }
        }
        return intersection;
    }
};

96. 不同的二叉搜索树

链接: 二叉搜索树
难度: 中等
题目:
题目描述
运行示例:
运行示例
思路:
这道题与昨天的训练题类似,但是这道题只用求种类数相对简单,我们可以利用动态规划求当前节点左右自述的种类数再相乘即可得到结果。
代码:

class Solution {
public:
    int numTrees(int n) {
        vector<int> dp(n+1,0);
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2; i <= n; i++){
            for(int j = 1; j <= i; j++){
                dp[i] += dp[j-1] * dp[i-j];
            }
        }
        return dp[n];
    }
};

97. 交错字符串

链接: 交错字符串
难度: 中等
题目:
题目描述

运行示例:
运行示例
思路:
我本来用的是回溯的但是时间超过了,看了官方发现这是一道比较典型的动态规划问题,dp[i][j]表示s1的前i个字符与s2的前j个字符组成的字符串与s3的前i+j-1个字符之间的状态。
在这里插入图片描述
代码:

class Solution {
public:
    bool isInterleave(string s1, string s2, string s3) {
        int n1 = s1.size();
        int n2 = s2.size();
        int n3 = s3.size();
        if(n1+n2 != n3) return false;
        vector<vector <bool>> dp(n1+1,vector<bool>(n2+1,false));  
        dp[0][0] = true;
        for(int i = 0; i <= n1; i++){
            for(int j = 0; j <= n2; j++){
                int k = i + j -1;
                if(i > 0) dp[i][j] = dp[i][j] || dp[i-1][j] && s1[i-1] == s3[k];
                if(j > 0) dp[i][j] = dp[i][j] || dp[i][j-1] && s2[j-1] == s3[k];
            }
        }
        return dp[n1][n2];
    }
};

44. 通配符匹配

链接: 通配符匹配
难度: 困难
题目:
题目描述
运行示例:
运行示例

思路:
这个题与上一道题交错字符串类似,都是求匹配所以使用动态规划算法。
代码:
置换:

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0; i < n; i++){
            while(nums[i] > 0 && nums[i] <= n && nums[nums[i] -1 ] != nums[i]){
                swap(nums[nums[i] - 1], nums[i]);
            } 
        }
        for(int i = 0; i < n; i++){
            if(nums[i] != i+1){
                return i + 1;
            }
        }
        return n + 1;
    }
};

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

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

相关文章

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于OOA-LSSVM鱼鹰算法优化最小…

Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中

1、打开注册表编辑器 快捷键winR 打开“运行”&#xff0c; 输入 regedit 2、 删除下列注册表中和无法移除的磁盘相关的选项 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ 3、打开“任务管理器”&#xff0c;重新启动“Windows资源…

C++指针比较

内存中各个数据的存放方式。 数组str1、str2、str3、str4都是在栈中分配的&#xff0c;内存中的内容都为“abc”加一个“\0”&#xff0c;但是他们的位置是不同的&#xff0c;因此代码第15行和第16行输出的都是0. 指针str5、str6、str7、str8也是在栈中分配的&#xff0c;他们…

Shell中的awk

一、awk 1.1.awk工作原理 逐行读取文本&#xff0c;默认以空格或tab键为分隔符进行分隔&#xff0c;将分隔所得的各个字段保存到内建变量中&#xff0c;并按模式或者条件执行编辑命令。 awk倾向于将一行分成多个"字段"然后再进行处理。 awk信息的读入也是逐行读取…

Apple Vision Pro 评测:这款顶尖头显仅是对未来的初步探索

原文&#xff1a;Apple Vision Pro Review: The Best Headset Yet Is Just a Glimpse of the Future 作者&#xff1a;Joanna Stern 戴上 Apple Vision Pro 混合现实头显整整近 24 小时后&#xff0c;有几件事让我颇感意外&#xff1a; 我居然没感到恶心。我竟然高效完成了大…

springboot---四大核心

四大核心 Starter简介总结 Autoconfigure简介示例原理自定义starter打包实践 总结 CLIActuator Starter 简介 springboot项目中几乎项目依赖中基本上全是各种各样的starter, 那么到底什么是starter? starter是一组方便的依赖描述符&#xff0c;当我们使用它时&#xff0c;可…

推荐系统|排序_多目标模型

文章目录 四大特征用户特征物品特征统计特征场景特征 训练过程中会遇到的问题 四大特征 ID相当于是人拥有的身份证&#xff0c;能够唯一确定出一个人 用户特征 主要指的是用户ID和用户画像 物品特征 主要是指物品ID和物品画像以及物品持有人。 统计特征 统计特征既包括对…

Java并发基础:CompletionService全面解析!

内容概要 CompletionService的优点在于能够解耦任务提交与结果获取&#xff0c;有效的整合线程池与阻塞队列&#xff0c;实现任务完成顺序的处理&#xff0c;提升系统吞吐量&#xff0c;它简化了多线程编程的复杂性&#xff0c;使开发者能够更专注于业务逻辑&#xff0c;而不必…

【昕宝爸爸小模块】深入浅出详解之常见的语法糖

深入浅出详解之常见的语法糖 一、&#x1f7e2;关于语法糖的典型解析二、&#x1f7e2;如何解语法糖&#xff1f;2.1&#x1f7e2;糖块一、switch 支持 String 与枚举2.2&#x1f4d9;糖块二、泛型2.3&#x1f4dd;糖块三、自动装箱与拆箱2.4&#x1f341;糖块四、方法变长参数…

TOP100 矩阵

1.73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示&#xff1a; m matrix.lengthn matrix[0].length1 < m, n < 200-2^31 < matrix[i][j] < 2^31 - 1 思路&#xf…

宏景eHR FrCodeAddTreeServlet SQL注入漏洞复现

前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 &#x1f680;前言&#x1f680;快排的核心过程partition&#xff08;划分过程&#xff09;&#x1f680;快排1.0&#x1f680;随机快速排序&#x1f680;稳定性 &#x1f680;前言 铁子们好啊&#xff01;继续我们排序算法今天要讲的是快排&#xff0c;通常大家所说…

❤搭建一个Springboot项目(ltbjava)

❤从0实现一个项目 搭建好我们的java环境和运行的IDEA软件以后&#xff0c;接下来我们就应该实现一个自己的项目了 0 项目描述 基于jdk17 的学习&#xff0c;因为据说最新的spring框架的最低要求是jdk17Maven 3.8.7PS&#xff1a;springboot3.0版本以上必须用jdk171、 项目创…

STM32F407移植OpenHarmony笔记6

继上一篇笔记&#xff0c;编译好STM32的裸机程序&#xff0c;能点亮LED灯了。 下一步就是启动liteos_m内核了。 不过为了更好的调试代码&#xff0c;需要先把printf重定向到串口&#xff0c;基于gcc的printf重定向和Keil不一样。 直接新建printf.c&#xff0c;在里面重写printf…

摄像头监控系统/视频监控云平台EasyCVR接入单兵设备后如何配置移动规矩

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体控可实现视频监控直播、视频轮播、视频录像…

C#学习笔记_类(Class)

类的定义 类的定义是以关键字 class 开始&#xff0c;后跟类的名称。类的主体&#xff0c;包含在一对花括号内。 语法格式如下&#xff1a; 访问标识符 class 类名 {//变量定义访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;......//方…

氢气泄漏检测仪使用方法:守护安全,从细节开始

随着科技的发展&#xff0c;我们的生活和工作环境中充满了各种潜在的危险。其中&#xff0c;氢气作为一种清洁能源&#xff0c;其使用日益广泛&#xff0c;但同时也带来了泄漏的风险。为了确保我们的安全&#xff0c;了解并正确使用氢气泄漏检测仪至关重要。下面将详细介绍氢气…

yum一直出现正在尝试其它镜像... 解决方法

更改yum镜像源地址为阿里云镜像即可 1. 去ail云yum镜像源官网 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 2. 选择自己对应的操作系统这里以centos7演示&#xff1a; 3. 先备份原yum配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Ce…

OC源码 - FailureDetectionPeriodBlockMinutes参数解读

FailureDetectionPeriodBlockMinutes 看看官方文档中对该参数如何描述 orchestrator will detect failures to your topology, always. As a matter of configuration you may set the polling frequency and specific ways for orchestrator to notify you on such detectio…

Selenium处理Alert弹窗

页面弹窗有 3 种类型&#xff1a; alert&#xff08;警告信息&#xff09; confirm&#xff08;确认信息&#xff09; prompt&#xff08;提示输入&#xff09; 对于页面出现的 alert 弹窗&#xff0c;Selenium 提供如下方法&#xff1a; 序号 方法/属性 描述 1 ac…