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…

线上隐私保护的未来:分布式身份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…

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

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

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

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

树莓派 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 …

Typora快捷键设置详细教程

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

代码随想录刷题笔记(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;指同一套项目代码在把不同的阶段需要根据实际…

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

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

(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录 错误原因解决问题 错误原因 出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR&#xff0c;从这个名字就可以看出&#xff0c;出错原因其实有可能有很多种&#xff0c;我这里说一种比较常见的&#xff0c;就是&#xff1a;显存不足。 一个困惑点在于&#xff0c;在…

【数据结构】图论与并查集

一、并查集 1.原理 简单的讲并查集&#xff0c;就是查询两个个元素&#xff0c;是否在一个集合当中&#xff0c;这里的集合用树的形式进行表示。并查集的本质就是森林, 即多棵树。 我们再来简单的举个例子: 假设此时的你是大一新生&#xff0c;刚进入大学&#xff0c;肯定是…

php-fpm运行一段时间,内存不足

目录 一&#xff1a;原因分析 二&#xff1a;解决 三:观察系统情况 php-fpm运行一段时间&#xff0c;内存不足&#xff0c;是什么原因呢。 一&#xff1a;原因分析 1:首先php-fpm的配置 &#xff08;1&#xff09;启动的进程数 启动的进程数越多,占用内存越高; 2:其次…

HarmonyOS自学-Day4(TodoList案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;TodoList小案例 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 HarmonyOS自学笔记&#xff0c;此类文章笔记我会默认大家都学过前端相关的知识知识来源为 HarmonyOS官方文…

1.NumPy 介绍

1.NumPy 介绍 1.1 NumPy 演变史 在 NumPy 之前&#xff0c;有两个 Python 数组包&#xff1a; Numeric 包 Numeric 包开发于 20 世纪 90 年代中期&#xff0c;在 Python 中提供了数组对象和数组感知函数。它由 C 语言编写&#xff0c;并与线性代数的标准快速实现相链接。它最…

nodejs微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

nodejs+vue+微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

对于冷链物流信息调度系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如管理员&#xff1b;首页、用户管理&#xff08;管理员、客户、业务员、配送员&#xff09;客户管理&#xff08;货物信息、客户运输单、车辆信息、调度安排&#xff09;这给管理者的工作带来了巨大…