leetcode贪心算法题总结(二)

本节目录

  • 1.最长回文串
  • 2.增减字符串匹配
  • 3.分发饼干
  • 4.最优除法
  • 5.跳跃游戏II
  • 6.跳跃游戏
  • 7.加油站
  • 8.单调递增的数字
  • 9.坏了的计算器

1.最长回文串

最长回文串
在这里插入图片描述

class Solution {
public:int longestPalindrome(string s) {//计数一:用数组模拟哈希表int hash[127] = {0};for(auto x:s){hash[x]++;}//统计结果int ret = 0;for(auto x:hash){ret += x/2*2;}return ret<s.size()?ret+1:ret;}
};

2.增减字符串匹配

增减字符串匹配
在这里插入图片描述

class Solution {
public:vector<int> diStringMatch(string s) {//贪心//遇到I,选择当前能选择的最小的数//遇到D,选择当前能选择的最大的数int left = 0,right = s.size();vector<int> ret;for(auto ch:s){if(ch == 'I') ret.push_back(left++);else ret.push_back(right--);}ret.push_back(left);return ret;}
};

3.分发饼干

分发饼干
在这里插入图片描述

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {int ret = 0,m = g.size(),n = s.size();sort(g.begin(),g.end());sort(s.begin(),s.end());for(int i=0,j=0;i<m&&j<n;i++,j++){while(j<n&&s[j]<g[i]) j++;if(j<n) ret++;}return ret;}
};

4.最优除法

最优除法
在这里插入图片描述

class Solution {
public:string optimalDivision(vector<int>& nums) {//贪心+找规律int n = nums.size();if(n == 1) return to_string(nums[0]);if(n == 2) return to_string(nums[0])+'/'+to_string(nums[1]);string str = to_string(nums[0])+"/("+to_string(nums[1]);for(int i=2;i<n;i++){str+='/'+to_string(nums[i]);}str +=')';return str;}
};

5.跳跃游戏II

跳跃游戏II
在这里插入图片描述

class Solution {
public:int jump(vector<int>& nums) {//使用层序遍历的思想,一层一层往后跳//maxPos表示下一层最右端点的下标int left = 0,right = 0,maxPos = 0,ret = 0,n = nums.size();while(left<=right){if(maxPos>=n-1) return ret;//判断能否跳到最后一个位置//遍历当前层for(int i=left;i<=right;i++){maxPos = max(maxPos,nums[i]+i);}left = right+1;right = maxPos;ret++;}return -1;}
};

6.跳跃游戏

跳跃游戏
在这里插入图片描述

class Solution {
public:bool canJump(vector<int>& nums) {//跟上一题跳跃游戏II思路一模一样//一层一层往后跳,层序遍历int left = 0,right = 0,maxPos = 0,n =nums.size();while(left<=right){if(maxPos>=n-1) return true;for(int i=left;i<=right;i++){maxPos = max(maxPos,nums[i]+i);}left = right+1;right = maxPos;}return false;}
};

7.加油站

加油站
在这里插入图片描述

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {//解法一:暴力枚举 O(n^2) 会超时int n = gas.size();int step = n;for(int i=0;i<n;i++){int rest = 0;for(int step=0;step<n;step++){int index = (i+step)%n;rest = rest+gas[index]-cost[index];if(rest<0) break;}if(rest>=0) return i;}return -1;}
};

在这里插入图片描述

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {//解法二:找规律+在解法一的基础上稍作改动int n = gas.size();for(int i=0;i<n;i++){int rest = 0;int step = 0;for(;step<n;step++){int index = (i+step)%n;rest = rest+gas[index]-cost[index];if(rest<0) break;}if(rest>=0) return i;i = i+step;}return -1;}
};

8.单调递增的数字

单调递增的数字
在这里插入图片描述

class Solution {
public:int monotoneIncreasingDigits(int n) {//找规律string s = to_string(n);int i=0,m = s.size();//找到第一个递减的位置while(i+1<m && s[i]<=s[i+1]) i++;if(i+1 == m) return n;//回推while(i-1>=0 && s[i]==s[i-1]) i--;s[i]--;for(int j=i+1;j<m;j++){s[j]='9';}return stoi(s);}
};

9.坏了的计算器

坏了的计算器
在这里插入图片描述

class Solution {
public:int brokenCalc(int startValue, int target) {//正难则反+贪心//从end->begin *->/ -1->+1int ret = 0;while(target>startValue){if(target%2 == 0) target/=2;else target += 1;ret++;}return ret+startValue-target;}
};

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

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

相关文章

新能源光伏行业CRM:推动绿色能源发展与高效客户管理的双重突破

随着“碳中和”计划以及传统能源价格的不断飙升&#xff0c;我国新能源光伏产业在国家“双碳”战略目标和市场需求的双重驱动下高歌猛进&#xff0c;中国光伏产业新增装机量、累计装机量连续多年位居全球首位。CRM在光伏产业中的作用也日益突出。下面为您介绍新能源光伏行业的C…

大模型系列:OpenAI使用技巧_给数据集中做文本向量化embeding

文章目录 1. 加载数据集2. 获取嵌入并保存以备将来使用 本笔记本提供了一个示例&#xff0c;演示如何从大型数据集中获取嵌入。 1. 加载数据集 本示例使用的数据集是来自亚马逊的精细食品评论。该数据集包含截至2012年10月&#xff0c;亚马逊用户留下的共568,454条食品评论。我…

线上隐私保护的未来:分布式身份DID的潜力

在日益数字化的世界中&#xff0c;人们的生活越来越多地依赖于互联网&#xff0c;数字身份也因而变得越来越重要。根据法律规定&#xff0c;互联网应用需要确认用户的真实身份才能提供各种服务&#xff0c;而用户则希望在进行身份认证的同时能够尽量保护他们的个人隐私&#xf…

Windows中共享文件夹以及防火墙介绍

目录 一. 共享文件夹是什么? 1.2 优缺点 1.3 实操案例 普通共享 高级共享 二. 防火墙 防火墙概述 防火墙典型应用场景 防火墙的基本概念 案例展示 JDK的安装 tomcat 防火墙配置 防火墙开放端口设置 一. 共享文件夹是什么? 它的作用就是让局域网的所有电脑都能获…

嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录

机缘巧合 机缘巧合下, 在爱芯元智的xx开发板下进行sdk的开发.由于开发板目前我拿到是当前最新的一版(估计是样品)&#xff0c;暂不公开开发板具体型号信息.以下简称板子 .很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE)&#xff0c;突然觉得爱芯…

Pytorch简介

1.1 Pytorch的历史 PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。在2016年发布后&#xff0c;PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。下面我们将详细介绍PyTorch的发展历程。 在2016年&#xff0c;Facebook的AI研究团队…

远程网络唤醒家庭主机(openwrt设置)

远程网络唤醒家庭主机&#xff08;openwrt设置&#xff09; 前提&#xff1a; 1.配置好主板bios的网络唤醒功能(网络教程自己百度一下找) 2.电脑开启网络唤醒功能(网络教程自己百度一下找) 3.路由器通过ddns实现域名和动态IP绑定内网穿透方法汇总_不修改光猫进行内网穿透-C…

8 异步通知

一,异步通知 应用程序可以通过sigevent请求异步接收特定Screen事件。 对于多线程应用程序,所有事件处理都可以通过异步通知定向到一个线程。当应用程序的所有事件处理都由一个线程执行时,更容易同步任务并确保某些任务按正确的顺序执行。 在你调用screen_notify()之前,你…

AAAI 2024:大模型如何掌握复杂工具?看孔子框架的教学之道

如今&#xff0c;大型语言模型&#xff08;LLM&#xff09;发展飞速&#xff0c;在文本和图像生成方面表现都很出色&#xff0c;但在我们的实际生活中&#xff0c;要理解和正确使用各种工具方面尚存在困难。人们期望这些模型在解决实际问题时能够灵活运用和理解各种工具&#x…

键盘字符(#键)显示错误

当屏幕上显示的键与键盘上按下的键不同时&#xff0c;尤其是 # 键。大多数情况下&#xff0c;此错误是由于 raspbian 和 NOOBS 软件的默认英国键盘配置所致。 解决方案&#xff1a; 要解决此问题&#xff0c;您需要将配置更改为您自己的键盘或语言的配置。这可以通过转到树莓派…

LeetCode第63题 - 不同路径 II

题目 解答 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;if (obstacleGrid[0][0] 1) {return 0;}if (obstacleGrid[m - 1][n - 1] 1) {return 0;}int[][] dp new int[m][n];dp…

Qt/QML编程学习之心得:loader和component(二十)

这个的确不是那么好用,最近使用中发现loader主要不让所有界面一起加载,可以实现异步加载的。假如使用如下的asychronous,属性值设置为true,但是光这个没法达成真正的异步加载,这点可以通过Component.onConstruction(类似于构造函数)和Component.onDestruction(类似于析…

树莓派 ubuntu20.04下 python调讯飞的语音API,语音识别和语音合成

目录 1.环境搭建2.去讯飞官网申请密钥3.语音识别&#xff08;sst&#xff09;4.语音合成&#xff08;tts&#xff09;5.USB声卡可能报错 1.环境搭建 #环境说明&#xff1a;(尽量在ubuntu下使用, 本次代码均在该环境下实现) sudo apt-get install sox # 安装语音播放软件 pip …

拓展操作(三) jenkins迁移到另一个机器

让清单成为一种习惯 互联网时代的变革,不再是简单的开发部署上线,持续,正确,安全地把事情做好尤其重要;把事情做好的前提是做一个可量化可执行的清单,让工程师就可以操作的清单而不是专家才能操作: 设定检查点 根据节点执行检查程序操作确认或边读边做 二者选其一不要太…

Typora快捷键设置详细教程

文章目录 一、快捷键设置步骤二、设置快捷键简单案例参考资料 一、快捷键设置步骤 在typora软件中&#xff0c;快捷键的设置步骤主要为&#xff1a; 打开【文件】–>【偏好设置】&#xff0c;找到【通用】–>【打开高级设置】&#xff0c;找到 conf.user.json 文件。 然…

数据库中如何修改和删除字段

PS&#xff1a;在"[ ]"中的所有数据都是可修改的 添加表字段 ALTER TABLE [表名] add [添加的新字段名] [添加新的数据类型] COMMENT [昵称] alter&#xff1a;修改&#xff08;后面一般加table表示修改表&#xff09; add&#xff1a;添加一个字段 在这个里面c…

代码随想录刷题笔记(DAY3)

今日总结&#xff1a;虽然之前刷过链表&#xff0c;但这次做的是有些费力的&#xff0c;也有了更深的理解。整理完今天的 Vue 笔记就睡。。。 DAY 3 01. 移除链表元素&#xff08;No. 203&#xff09; 题目链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-…

SpringBoot项目部署及多环境

1、多环境 2、项目部署上线 原始前端 / 后端项目宝塔Linux容器容器平台 3、前后端联调 4、项目扩展和规划 多环境 程序员鱼皮-参考文章 本地开发&#xff1a;localhost&#xff08;127.0.0.1&#xff09; 多环境&#xff1a;指同一套项目代码在把不同的阶段需要根据实际…

nginx配置https请求转发到http出现Mixed Contend问题

问题描述 nginx配置https请求转发到http后&#xff0c;部分网站访问出现空白页&#xff0c;感觉像是js、css没有正常加载。通过F12&#xff0c;发现很多js文件出现Mixed Content&#xff0c;状态是已屏蔽&#xff0c;协议都是http的。 HTTPS网页中加载HTTP资源被称之为Mixed …

ADRC-跟踪微分器TD的Maltab实现及参数整定

目录 问题描述&#xff1a; 跟踪微分器TD基本概念&#xff1a; Matlab及其实现&#xff1a; 跟踪效果&#xff1a; 例1&#xff1a;跟踪信号 sin(t) 0.5*rand(1,1)。 例2&#xff1a;跟踪部分时段为方波的信号&#xff0c;具体形式见代码get_command。 参数整定&#xf…