力扣题目训练(5)

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.hqwc.cn/news/440305.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用友GRP-U8 forgetPassword_old.jsp SQL注入漏洞(QVD-2023-31085)

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 forgetPassword_old.jsp接口处存在SQL注入漏…

移动机器人正引领着高端芯片实现量产

在数字化时代&#xff0c;高端芯片已经成为推动各行各业创新发展的关键要素。而随着移动机器人技术的不断突破&#xff0c;高端芯片的量产也迎来了新的发展机遇。在这个过程中&#xff0c;移动机器人不仅为高端芯片提供了广阔的应用场景&#xff0c;还为其实现量产提供了强有力…

【Go】Viper读取配置文件

go get github.com/spf13/viper 1. 设置配置文件的信息 etcd:ip: "192.168.6.106"port: 2379dialTimeout: 3redis:ip: "192.168.6.107"port: 6379password: "root1028"2. 读取配置文件的信息 2.1 通过kv的方式 package mainimport ("fm…

【蓝桥杯日记】复盘篇二:分支结构

前言 本篇笔记主要进行复盘的内容是分支结构&#xff0c;通过学习分支结构从而更好巩固之前所学的内容。 目录 前言 目录 &#x1f34a;1.数的性质 分析&#xff1a; 知识点&#xff1a; &#x1f345;2.闰年判断 说明/提示 分析&#xff1a; 知识点&#xff1a; &am…

03:华为云管理|云主机管理|云项目实战

华为云管理&#xff5c;云主机管理&#xff5c;云项目实战 安全组配置部署跳板机配置yum源&#xff0c;安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源&#xff0c;安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…

Python爬虫实践指南:利用cpr库爬取技巧

引言 在信息时代&#xff0c;数据是无价之宝。为了获取网络上的丰富数据&#xff0c;网络爬虫成为了不可或缺的工具。在Python这个强大的编程语言中&#xff0c;cpr库崭露头角&#xff0c;为网络爬虫提供了便捷而高效的解决方案。本文将深入探讨如何利用cpr库实现数据爬取的各…

【SpringBoot】springboot整合mongoDB

目录 1.配置 2.使用 创建实体类 创建MongoDB仓库接口 创建一个控制器 1.配置 创建好springboot工程后 引入mongoDB依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongo…

【MySQL 流浪之旅】 第六讲 浅谈 MySQL 锁

系列文章目录 【MySQL 流浪之旅】 第一讲 MySQL 安装【MySQL 流浪之旅】 第二讲 MySQL 基础操作【MySQL 流浪之旅】 第三讲 MySQL 基本工具【MySQL 流浪之旅】 第四讲 MySQL 逻辑备份【MySQL 流浪之旅】 第五讲 数据库设计的三个范式 目录 系列文章目录 一、什么是锁&#x…

25考研北大软微该怎么做?

25考研想准备北大软微&#xff0c;那肯定要认真准备了 考软微需要多少实力 现在的软微已经不是以前的软微了&#xff0c;基本上所有考计算机的同学都知道&#xff0c;已经没有什么信息优势了&#xff0c;只有实打实的有实力的选手才建议报考。 因为软微的专业课也是11408&am…

D1675滤波器和缓冲器用于单通道6阶高清视频滤波驱动电路,可提高视频信号性能

D1675单电源工作电压为2.5V到5V&#xff0c;是一款高清视频信号译码、编码的滤波器和缓冲器。与使用分立元件的传统设计相比&#xff0c;D1675更能节省PCB板面积&#xff0c;并降低成本以及提高视频信号性能。D1675集成了一个直流耦合输入缓冲器、一个消除带外噪声的视频编码器…

C++ 数论相关题目 求组合数Ⅱ

给定 n 组询问&#xff0c;每组询问给定两个整数 a&#xff0c;b &#xff0c;请你输出 Cbamod(1097) 的值。 输入格式 第一行包含整数 n 。 接下来 n 行&#xff0c;每行包含一组 a 和 b 。 输出格式 共 n 行&#xff0c;每行输出一个询问的解。 数据范围 1≤n≤10000 , 1…