10.2刷题计划

news/2025/10/3 1:14:23/文章来源:https://www.cnblogs.com/huwy-123/p/19122526

力扣10题  正则表达式匹配

 

 

 

 

 

 

 

力扣22题  括号生成

z是代表左括号的数量,y代表右括号的数量,k代表每个括号的最大数量

设置一个temp,存储递归中的字符串

返回条件:左括号和右括号数量均到达k,将temp压入答案中

每次递归先判断左括号有没有到达上限(z>k)没有就可以插入左括号然后递归(z+1,y,k)递归完回溯

然后判断右括号能不能加,如果左括号数量小于等于右括号,就不能加右括号,加入右括号后

同理递归(z,y+1,k)

 

class Solution {
public:
    string temp; //存储中间字符串
    vector<string>ans; //答案
    void dfs(int z,int y,int k){
        if(z==k&&y==k){     //如果括号达到上线 就压入答案
            ans.push_back(temp);
            return;
        }
        if(z<k){    //如果还能加入左括号 就加入
            temp.push_back('(');
            dfs(z+1,y,k);
            temp.pop_back();//回溯
        }
        if(z>y&&y<k){ //只有还有左括号的时候才能压入右括号
            temp.push_back(')');
            dfs(z,y+1,k);
            temp.pop_back();
        }
    }
    vector<string> generateParenthesis(int n) {
       dfs(0,0,n);
       return ans;
    }
};
 
力扣23题 合并k个升序链表(困难)
先将这些链表两两合并,然后再四四合并,类似于归并排序的思路。
class Solution {
public:
    ListNode *mergeTwoLists(ListNode *head1,ListNode *head2){
        ListNode dummy(0);
        auto cur=&dummy;
        while(head1&&head2){
            if(head1->val<head2->val){
                cur=cur->next=new ListNode(head1->val);
                head1=head1->next;
            }else{
                cur=cur->next=new ListNode(head2->val);
                head2=head2->next;
            }
        }
        cur->next=head1?head1:head2;
        return dummy.next;
    }
    ListNode *dfs(vector<ListNode*>&lists,int i,int j){
        if(j==i) return nullptr;
        if(j==i+1) return lists[i];
        int mid=(j-i)/2;
        auto left = dfs(lists,i,i+mid);
        auto right = dfs(lists,i+mid,j);
        return mergeTwoLists(left,right);
    }
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        return dfs(lists,0,lists.size());
    }
};
 
力扣31题  下一个排列
1.将一个左边的较小数与一个右边的较大数交换,以能够让当前排列变大,从而得到下一个排列。
2.同时我们要让这个较小数尽量靠右,而较大数尽可能小。当交换完成后,较大数右边的数需要按照升序重新排列。
这样可以在保证新排列大于原来排列的情况下,使变大的幅度尽可能小。
如果在步骤1找不到顺序对,说明当前序列已经是一个
 

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int i =nums.size()-2;
        while(i>=0 && nums[i]>=nums[i+1]){
            i--;
        }
        if(i>=0){
            int j = nums.size()-1;
            while(j>=0 && nums[i]>=nums[j]){
                j--;
            }
            swap(nums[i],nums[j]);
        }
        reverse(nums.begin()+i+1,nums.end());
    }
};
 
 
力扣238题   除自身以外数组的乘积
 根据表格的主对角线,可将表格分为上三角和下三角两部分。分别迭代计算下三角和上三角两部分的乘积,
即可不使用除法就获得结果。
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int len = nums.size();
        if(len==0) return{};
        vector<int>ans(len,1);
        ans[0] = 1;
        int tmp = 1;
        for(int i=1;i<len;i++){
            ans[i] = ans[i-1]*nums[i-1];
        }
        for(int i=len-2;i>=0;i--){
            tmp *= nums[i+1];
            ans[i] *= tmp;
        }
        return ans;
    }
};
 
力扣240题  搜索二维矩阵II

1.从矩阵 matrix 左下角元素(索引设为 (i, j) )开始遍历,并与目标值对比:
(1)当 matrix[i][j] > target 时,执行 i-- ,即消去第 i 行元素。
(2)当 matrix[i][j] < target 时,执行 j++ ,即消去第 j 列元素。
(3)当 matrix[i][j] = target 时,返回 true ,代表找到目标值。
2.若行索引或列索引越界,则代表矩阵中无目标值,返回 false 。

每轮i或者j移动后,相当于生成了“消去一行(列)的新矩阵”,索引(i,j)指向新矩阵的左下角元素(标志数),因此

可以重复使用以上性质消去行(列)。

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int i = matrix.size()-1,j=0;
        while(i>=0 && j<matrix[0].size()){
            if(matrix[i][j]>target) i--;
            else if(matrix[i][j]<target) j++;
            else return true;
        }
        return false;
    }
};
 
力扣  621题  任务调度器

设至少有一种任务A出现次数最多,最大出现次数记为cnt_max
设出现次数与cnt_max相等的任务有equal_cnt_max个
1、有cnt_max个A任务,共有(cnt_max-1)个间隔,每个间隔题目要求插入n个不同的任务,凑不够n个不同任务我们用“待命”来填充。
2、最后一个A后面可能还有其他任务,此时的其他任务只能是出现次数等于cnt_max的任务,不然它早就全部用来填充((cnt_max-1))个间隔了(每个间隔需填充一个)
3、特殊情况是n=0,则题目求出来的答案应该是任务的总数,即代码中的task.size();
4、答案要包括任务A的个数,所以答案 ans = max((cnt_max-1)*n + cnt_max + equal_cnt_max,tasks.size())

class Solution {
public:
    int leastInterval(vector<char>& tasks, int n) {
        vector<int>cnt(26,0);
        for(auto type : tasks){
            cnt[type-'A']++;
        }
        int cnt_max = 0,equal_cnt_max = -1;
        for(auto i:cnt) cnt_max = max(i,cnt_max);
        for(int i=25;i>=0;--i){
            if(cnt_max==cnt[i]){
                ++equal_cnt_max;
            }
        }
        int ans = max((cnt_max-1)*n+cnt_max+equal_cnt_max,(int)tasks.size());
        return ans;
    }
};
 
力扣394题  字符串解码
class Solution {
public:
    string decodeString(string s) {
        string res = "";
        stack <int> nums;
        stack <string> strs;
        int num = 0;
        int len = s.size();
        for(int i = 0; i < len; ++ i)
        {
            if(s[i] >= '0' && s[i] <= '9')
            {
                num = num * 10 + s[i] - '0';
            }
            else if((s[i] >= 'a' && s[i] <= 'z') ||(s[i] >= 'A' && s[i] <= 'Z'))
            {
                res = res + s[i];
            }
            else if(s[i] == '[') //将‘[’前的数字压入nums栈内, 字母字符串压入strs栈内
            {
                nums.push(num);
                num = 0;
                strs.push(res);
                res = "";
            }
            else //遇到‘]’时,操作与之相配的‘[’之间的字符,使用分配律
            {
                int times = nums.top();
                nums.pop();
                for(int j = 0; j < times; ++ j)
                    strs.top() += res;
                res = strs.top(); //之后若还是字母,就会直接加到res之后,因为它们是同一级的运算
                                  //若是左括号,res会被压入strs栈,作为上一层的运算
                strs.pop();
            }
        }
        return res;
    }
};
 
 
 

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

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

相关文章

云南省建设厅网站人员查询湛江建站公司

学习一门新的编程语言可能是一个具有挑战性的过程&#xff0c;但通过一些系统的方法&#xff0c;可以大大加快这个过程。 目录 第一步&#xff1a;通过书籍和视频课程掌握基本语法1. **学习编程语言的基础知识**2. **掌握字符串处理**3. **掌握正则表达式和解析器**4. **掌握面…

US$348 Turbo Decoder HU100RV2 for BMW F Series

Turbo Decoder HU100RV2 for BMW F SeriesPackage Including:1pc x Turbo Decoder HU100RV2 for BMW F Series Pictures of Turbo Decoder HU100RV2 for BMW F SeriesTurbo Decoder HU100RV2 for BMW F Series, now on…

树莓派搭建NAS之二:安装OpenMediaVault(OMV)

安装OpenMediaVault(OMV)安装的树莓派必须没有桌面才行,有桌面先提示安装失败。在终端运行下面的命令开始安装: wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/instal…

dp 总结 1

dp 总结 1 闲来无事, 把刚学明白的 dp 笔记整理一下. shout out to professor Adzlpxsn. 基本的, 状态, 转移, 方程 状态 一句话概况即为当前的属性. 比如说, 贝贝现在是 \(30\) 岁, 发了 \(0\) 张专辑, 我们就可以说 …

绍兴建设局网站网址查询器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用步骤1.安装supervisor-win2.配置supervisord3.配置program4.启动supervisord.exe5.supervisorctl.exe管控 二、后台启动总结 前言 windows使用supervi…

网站做行测题wordpress首页显示内容设置

WinCC Professional V16 支持客户机/服务器架构&#xff0c;但目前只支持单个服务器或单对冗余服务器/多个客户机的模式&#xff0c;还不能支持像WinCC V7.5 SP1中的多个服务器/多个客户机的分布式架构。 组态步骤如下&#xff1a; 1. 在项目中分别添加服务器站和客户机站&…

盛盾科技网站建设简洁高端网页

很清爽的 abstract 给出链接 前面的背景意义 其实 是通用的 这里替大家 整理一吓吓 1 缺陷分类在钢铁表面缺陷检测中 有 意义。 2 大多数缺陷分类模型都是基于完全监督的学习&#xff0c; 这需要大量带有图像标签的训练数据。 在工业场景中收集有缺陷的图像是非常困难…

US$98 Battery for 2M2 Magic Tank Automatic Car Key Cutting Machine

Battery for 2M2 Magic Tank Automatic Car Key Cutting MachineThis battery is for you to put in 2M2 Cutting Machine and take out for working. It can cut about 20 keys when you charge it completely.Packag…

南宁市建设工程质量安全协会网站如何安装wordpress图解

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括招聘信息管理系统的网络应用&#xff0c;在外国招聘信息管理系统已经是很普遍的方式&#xff0c;不过国内的线上管理系统可能还处于起步阶段。招聘信息管理系统具有招聘信息管…

US$44 Ford Soft Rubber FO21-8 Quick Opening Tool

Ford Soft Rubber FO21-8 Quick Opening Tool Package includes:1pc x Ford Soft Rubber FO21-8 Quick Opening Tool Pictures of Ford Soft Rubber FO21-8 Quick Opening ToolFord Soft Rubber FO21-8 Quick Opening …

为什么做网站的会弄友情链接官方网站建设 磐石网络多少费用

《大学计算机基础》试题题库及答案一、单选题练习 1&#xff0e;完整的计算机系统由( C )组成。A&#xff0e;运算器、控制器、存储器、输入设备和输出设备B&#xff0e;主机和外部设备C&#xff0e;硬件系统和软件系统D&#xff0e;主机箱、显示器、键盘、鼠标、打印机2&…

冷水江网站定制自媒体网站建设

abstract class 抽象类定义规则如下: (1) 抽象类和抽象方法都必须用 abstract 关键字来修饰。 (2) 抽象类不能被直接实例化&#xff0c;也就是不能用new关键字去产生对象。 (3) 抽象方法只需声明&#xff0c;而不需实现。 (4) 含有抽象方法的类必须被声明为抽象类&#xff0c…

杭州公司官方网站制作济南营销网站制作

一、简介 RESTful设计的背景源于Roy Fielding博士在他2000年的博士论文中提出的REST&#xff08;Representational State Transfer&#xff09;架构风格。REST旨在构建可伸缩、可维护的网络应用&#xff0c;强调资源的统一标识、无状态通信和统一接口。基于HTTP协议&#xff0…

上海市建设市场管理信息平台网站中天建设集团有限公司招聘

1、写一个两个按钮 2、给两个按钮加动画的样式 3、写方法控制两个按钮的显示 <button class"more-button" bindtap"toggleMoreOptions">更多</button><!-- 按钮列表容器&#xff0c;初始状态设置为隐藏 --> <view class"option…

网站建设人员职责分布秦皇岛飞彪建设

Wii模拟器Dolphin Mac是款适合Mac电脑中的游戏玩家们使用的模拟器工具。Wii模拟器Dolphin Mac官方版支持直接运行游戏镜像文件&#xff0c;玩家可以将游戏ISO拷贝到某一个文件夹中统一进行管理。Wii模拟器Dolphin Mac除了键盘和鼠标外&#xff0c;还支持配合原版的Wii遥控器操作…

phpcms 手机网站后台开县网站建设

一、super关键字的使用1. 为什么需要super&#xff1f;举例1&#xff1a;子类继承父类以后&#xff0c;对父类的方法进行了重写&#xff0c;那么在子类中&#xff0c;是否还可以对父类中被重写的方法进行调用&#xff1f; 可以&#xff01;举例2&#xff1a;子类继承父类以后&a…

上栗网站建设做资源下载网站违法吗

早晨问候&#xff1a; 亲爱的朋友们&#xff0c;大家早上好&#xff01;今天是2024年11月28日&#xff0c;第48周的第四天&#xff0c;也是十一月的第二十八天&#xff0c;农历甲辰[龙]年十月廿四。在这个即将步入月末、阳光依旧明媚的清晨&#xff0c;愿第一缕阳光轻轻洒落在…

html网站开发开题报告范文wordpress 图片处理

activated(){this.cheange(0) },用于刷新uni页面的操作 返回上一个页面

宋庄网站建设什么是域名解析错误

一、大数据时代还需要数据治理吗&#xff1f; 数据平台发展过程中随处可见的数据问题 大数据不是凭空而来&#xff0c;1981年第一个数据仓库诞生&#xff0c;到现在已经有了近40年的历史&#xff0c;相对数据仓库来说我还是个年轻人。而国内企业数据平台的建设大概从90年代末…