【贪心算法】day10

📝前言说明:

  • 本专栏主要记录本人的贪心算法学习以及LeetCode刷题记录,按专题划分
  • 每题主要记录:(1)本人解法 + 本人屎山代码;(2)优质解法 + 优质代码;(3)精益求精,更好的解法和独特的思想(如果有的话);(4)贪心策略正确性的 “证明”
  • 文章中的理解仅为个人理解。如有错误,感谢纠错

🎬个人简介:努力学习ing
📋本专栏:C++刷题专栏
📋其他专栏:C语言入门基础,python入门基础,C++学习笔记,Linux
🎀CSDN主页 愚润泽

你可以点击下方链接,进行其他贪心算法题目的学习

点击链接开始学习
贪心day1贪心day2
贪心day3贪心day4
贪心day5贪心day6
贪心day7贪心day8
贪心day9贪心day10

也可以点击下面连接,学习其他算法

点击链接开始学习
优选专题动态规划
递归、搜索与回溯贪心算法

题目

  • 1262. 可被三整除的最大和
    • 优质解
  • 1054. 距离相等的条形码
    • 优质解
  • 767. 重构字符串
    • 个人解


1262. 可被三整除的最大和

题目链接:https://leetcode.cn/problems/greatest-sum-divisible-by-three/description/
在这里插入图片描述


优质解

思路:

  • 反向思考,先把所有数加起来再删除小数字
  • 通过%3所得的结果,分类讨论

代码:

class Solution {
public:int maxSumDivThree(vector<int>& nums) {ranges::sort(nums);int s = std::accumulate(nums.begin(), nums.end(), 0);if(s % 3 == 0) return s;vector<int> a[3]; // 用来分别存储 %3 == 1  和 %3 == 2 的数,多开一个方便下标对应for(int x: nums)a[x % 3].push_back(x);int ans = 0;if(s % 3 == 2) // 删 一个%3==2 或者 两个%3==1(和下面的个数是相对的)swap(a[1], a[2]);if(a[1].size()) ans =  s - a[1][0];if(a[2].size() >= 2) ans = max(ans, s - a[2][0] - a[2][1]);return ans;}
};

时间复杂度:O(nlogn)O(nlogn)O(nlogn)
空间复杂度:O(n)O(n)O(n)


1054. 距离相等的条形码

题目链接:https://leetcode.cn/problems/distant-barcodes/description/

在这里插入图片描述


优质解

思路:

  • 贪心策略:从最多的数开始,摆放,每个一个位置摆放一个数

代码:

class Solution {
public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {int n = barcodes.size();unordered_map<int, int> count;for(int x: barcodes) // 统计每个数出现的次数count[x]++;// 排序priority_queue<pair<int, int>> heap;for(auto &[x, cx] : count)heap.push({cx, x}); // 默认按第一个元素的个数排序,这样可以省的写仿函数比较器// 填写答案vector<int> ans(n, 0);int i = 0; // 从单数位置开始放while(heap.size()){auto [cx, x] = heap.top();heap.pop();for(int j = 0; j < cx; j++){if(i >= n) i = 1; // 放偶数位置ans[i] = x;i += 2;}}return ans;}
};

时间复杂度:O(nlogn)O(nlogn)O(nlogn)
空间复杂度:O(n)O(n)O(n)


767. 重构字符串

题目链接:https://leetcode.cn/problems/reorganize-string/description/
在这里插入图片描述

个人解

思路:

  • 和上一题方法一样,不过多做了一些处理
    屎山代码:
class Solution {
public:string reorganizeString(string s) {// 当个数最多的字母的个数,大于其他所有字母个数的和,那就无法重新排序int n = s.size();unordered_map <char, int> count;for(char c:s)count[c]++;priority_queue<pair<int, char>> q;int m = 0, sum = 0;for(auto [x,cx] : count){q.push({cx, x});sum += cx;m = max(m, cx);}if(sum + 1 < m * 2) return "";int i = 0;string ans(n, ' ');while(q.size()){auto [cx, x] = q.top();q.pop();for(int j = 0; j < cx; j++){if(i >= n) i = 1;ans[i] = x;i += 2;}}return ans;}
};

时间复杂度:O(n)O(n)O(n)
空间复杂度:O(n)O(n)O(n)


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

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

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

相关文章

LeetCode算法日记 - Day 42: 岛屿数量、岛屿的最大面积

目录 1. 岛屿数量 1.1 题目解析 1.2 解法 1.3 代码实现 2. 岛屿的最大面积 2.1 题目解析 2.2 解法 2.3 代码实现 1. 岛屿数量 https://leetcode.cn/problems/number-of-islands/ 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维…

短波红外相机在机器视觉检测方向的应用

短波红外相机在机器视觉检测方向的应用短波红外相机&#xff1a;机器视觉的“低成本突破者”一、打破成本困局&#xff1a;短波红外的“平民化”革新二、核心技术&#xff1a;有机材料的“硬核创新”1. 材料革命&#xff1a;有机感光层的优势2. 工艺兼容&#xff1a;嫁接成熟CM…

【数据结构与算法】图 Floyd算法

相关题目&#xff1a; 1334. 阈值距离内邻居最少的城市 - 力扣&#xff08;LeetCode&#xff09; 资料 &#xff1a; Floyd算法原理及公式推导 - 知乎 Floyd 算法是一种经典的动态规划算法&#xff0c;用与求解图中所有顶点之间的最短短路路径。它由Robert Floyd 于1962…

卫星通信天线的指向精度,含义、测量和计算

卫星通信天线的指向精度&#xff0c;含义、测量和计算我们在卫星通信天线的技术规格书中&#xff0c;都会看到天线指向精度这个指标。一般来说&#xff0c;技术规格书上的天线指向精度的参数是这么写的&#xff1a;“天线指向精度≤1/10半功率波束带宽”今天这个文章&#xff0…

基于LSTM与3秒级Tick数据的金融时间序列预测实现

数据加载模块解析 def load_data(filepath):df pd.read_csv(filepath)return df该函数承担基础数据采集职责&#xff0c;通过Pandas库读取CSV格式的高频交易数据&#xff08;典型如股票分笔成交明细&#xff09;。输入参数为文件路径字符串&#xff0c;输出结构化DataFrame对象…

C# --- Field and Property

C# --- Field and Property字段 (Field) vs. 属性 (Property)Property的声明初始化方法单例类property错误初始化导致线程泄漏字段 (Field) vs. 属性 (Property) 字段 (Field) - 数据的存储容器 字段是直接在类或结构中声明的变量。它是存储数据的地方&#xff0c;是对象状态的…

【Python】实现一个文件夹快照与比较工具

1. 工具简介 在日常开发、项目管理或备份场景中&#xff0c;我们经常需要知道某个文件夹中的文件是否发生变化&#xff0c;例如&#xff1a; 项目源码是否新增或修改文件&#xff1f;数据集是否被不小心删除或篡改&#xff1f;备份文件夹是否和上次一致&#xff1f; 本教程将教…

LINUX913 shell:set ip [lindex $argv 0],\r,send_user,spawn ssh root@ip “cat “

问题 获取公钥 [codesamba ~]$ cat pub.sh #!/bin/usr/expect set ip "$1" set password 123456 set timeout 20 spawn ssh root192.168.235.100:cat ~/.ssh/id_rsa.pub expect { "yes/no" {send "yes/r";exp_continue} "password:" {…

Acwing算法基础课--链表

一、单链表 AcWing 826. 单链表 代码 N 100010 idx 0 e [0] * N ne [0] * N head -1def init():global idx,headidx 0head -1def add_head(x):global idx,heade[idx] xne[idx] headhead idxidx 1def delete(k):ne[k] ne[ne[k]]def add_k(k,x):global idxe[idx] …

AI表征了西方的有界,AI+体现了东方的无界

AI表征了西方的有界&#xff0c;AI体现了东方的无界&#xff0c;试图通过文化差异的视角来对比传统AI&#xff08;AI&#xff09;与增强型或融合型AI&#xff08;AI&#xff09;的特征。一、“AI表征了西方的有界”西方的“有界”可以理解为&#xff1a;1、逻辑清晰、结构严谨&…

LabVIEW泵轮检测

​在现代制造业蓬勃发展的浪潮下&#xff0c;汽车行业也迎来了高速发展期。液力变矩器作为实现车辆自动变速的关键零件产品&#xff0c;在汽车动力系统中扮演着不可或缺的角色。泵轮作为液力变矩器的核心组成部分&#xff0c;其生产质量直接影响着液力变矩器的性能。因此&#…

RT-DETRv2 中的坐标回归机制深度解析:为什么用 `sigmoid(inv_sigmoid(ref) + delta)` 而不是除以图像尺寸?

引言&#xff1a;一个看似简单的公式&#xff0c;背后藏着工业级设计智慧 在阅读 RT-DETRv2&#xff08;Real-Time DETR v2&#xff09;源码时&#xff0c;我曾被一行代码深深震撼&#xff1a; inter_ref_bbox F.sigmoid(bbox_head[i](output) inverse_sigmoid(ref_points_de…

简单了解一下GraphRAG

传统RAG的缺点 当我们将一段文本信息以句子分割后&#xff0c;存入到向量数据库中。用户提问“老王喜欢吃什么”&#xff0c;这个问题会与向量数据库中的许多句子关联性比较强&#xff0c;能返回准确且具体的信息。 但是&#xff0c;若是问题换成“出现了几次西瓜”&#xff0c…

HTTP 状态码背后的逻辑:从请求到响应的完整流程解析(含完整流程图)

在日常的 Web 开发与 API 调试中&#xff0c;我们经常会遇到各种 HTTP 状态码 ——404 Not Found、401 Unauthorized、500 Internal Server Error... 这些数字背后并非随机出现&#xff0c;而是服务器处理请求过程中不同阶段的 "反馈信号"。理解这些状态码的触发逻辑…

Vue:下拉框多选影响行高

目录 一、 出现场景二、 解决方案 一、 出现场景 在使用el-select增加multiple属性进行多选时&#xff0c;会出现高度塌陷的情况 二、 解决方案 首先需要在el-select中增加collapse-tags属性&#xff0c;并在style中增加如下样式 方案一 <style scoped> ::v-deep .e…

如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?

1.简介研华已将高通跃龙QCS6490 技术应用于嵌入式模块、单板电脑和AI摄像头等各种规格的嵌入式硬件中。QCS6490平台支持全面的操作系统生态系统&#xff0c;包括Windows、Ubuntu、Yocto和 Android。Windows 11 IoT企业版是微软新一代的物联网操作系统&#xff0c;具有更强的安全…

阿里云国际代理:如何利用RDS构建高可用、可扩展的数据库架构

讲下云数据库RDS案例解析&#xff0c;若在上云或用云过程中有不懂的&#xff0c;可寻云枢国际yunshuguoji助力免卡上云用云。1、RDS MySQL数据库代理支持读写分离、连接保持、就近访问、事务拆分、连接池、SSL加密等功能&#xff0c;能够降低主实例负载&#xff0c;提高实例可用…

C++之特殊类设计

文章目录前言一、 设计一个不能被拷贝的类1. C98 实现方式2. C11 实现方式二、设计一个只能在堆上创建对象的类1. 方法一&#xff1a;析构函数私有&#xff0c;提供destory接口释放资源2. 方法二&#xff1a;构造函数私有三、 设计一个只能在栈上创建对象的类1. 实现方式四、设…

TupiTube,一款免费开源的 2D 动画创作工具

TupiTube&#xff0c;一款免费开源的 2D 动画创作工具 ** ** 功能 ** &#xff1a;开源、免费的 2D 动画软件&#xff0c;界面简单&#xff0c;支持逐帧动画、剪纸动画、定格动画&#xff0c;能导入素材并导出多种视频和图片格式&#xff0c;适合儿童、学生和动画爱好者入门创作…

MoE架构训练系统设计:专家并行与门控网络优化策略

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 摘要 混合专家&#xff08;Mixture of Experts&#xf…