刷题笔记:力扣第860、406题(贪心算法)
力扣第860题-柠檬水找零1.本题分为如下三种情况1收5元不需要找零。5元数量1。2收10元需要找零5元。5元数量-110元数量1。3收20元需要找零15元。因为10元只能给20元找零所以要优先使用10元数量和5元数量各-1若没有10元再考虑只用5元找零5元数量-3。在过程中只要出现5元或10元的数量减到负数的情况则返回false。2.基于以上思想可写出完整代码如下1. bool lemonadeChange(int* bills, int billsSize) { 2. // five5元零钱数量ten10元零钱数量 3. int five 0; 4. int ten 0; 5. 6. for (int i 0; i billsSize; i){ 7. switch(bills[i]){ 8. case 5: 9. // 收到5元无需找零 10. five; 11. break; 12. 13. case 10: 14. // 收到10元必须找一张5元 15. if (five 1) return false; 16. five--; 17. ten; 18. break; 19. 20. case 20: 21. // 收到20元【贪心优先策略】优先 105其次三张5 22. if (five 0 ten 0){ 23. five--; 24. ten--; 25. } else if (five 3){ 26. five - 3; 27. } else { 28. // 无法凑出15元零钱 29. return false; 30. } 31. break; 32. } 33. } 34. 35. return true; 36. }该算法时间复杂度为O(n)空间复杂度为O(1)。力扣第406题-根据身高重建队列1.本题刚拿到之后没有任何思路看了题解之后才知道该怎么做。本题使用的核心思想是“矮个子相对于高个子是‘隐形’的”即矮个子插入到高个子前面比高个子高的数量不变。2.先将数组进行排序如果身高不一样则按照身高进行降序排序如果一样则按照k值进行升序排序。之后遍历数组将遍历到的元素按照它的k值插入到对应位置就会发现矮个子对高个子无影响数组排列成功。3.基于以上思想可写出完整代码如下1. /** 2. * Return an array of arrays of size *returnSize. 3. * The sizes of the arrays are returned as *returnColumnSizes array. 4. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free(). 5. */ 6. // 排序比较函数按身高h降序h相等时按k升序 7. int cmp(const void* a, const void* b){ 8. int* p1 *(int**)a; 9. int* p2 *(int**)b; 10. 11. if (p1[0] ! p2[0]){ 12. return p2[0] - p1[0]; // h大的放前面 13. } else { 14. return p1[1] - p2[1]; // h相同k小的放前面 15. } 16. } 17. 18. int** reconstructQueue(int** people, int peopleSize, int* peopleColSize, int* returnSize, int** returnColumnSizes) { 19. // 排序身高降序同身高k升序 20. qsort(people, peopleSize, sizeof(int*), cmp); 21. 22. // 分配结果二维数组每个人占int[2] 23. int** res (int**)malloc(sizeof(int*) * peopleSize); 24. for (int i 0; i peopleSize; i){ 25. res[i] (int*)malloc(sizeof(int) * 2); 26. } 27. // 分配每一行的列数数组 28. *returnColumnSizes (int*)malloc(sizeof(int) * peopleSize); 29. 30. // 逐个插入把当前people[i]插入下标 idx people[i][1] 的位置 31. for (int i 0; i peopleSize; i){ 32. int idx people[i][1]; 33. // 将 [idx, i 1] 整体向后挪一位腾出idx位置 34. for (int j i; j idx; j--){ 35. res[j][0] res[j - 1][0]; 36. res[j][1] res[j - 1][1]; 37. } 38. // 在idx位置放入当前人的信息 39. res[idx][0] people[i][0]; 40. res[idx][1] people[i][1]; 41. } 42. 43. *returnSize peopleSize; 44. // 每个人的数组都是2列 45. for (int i 0; i peopleSize; i) { 46. (*returnColumnSizes)[i] 2; 47. } 48. return res; 49. }该算法时间复杂度为O(n2)空间复杂度为O(logn)。4.本题的cmp和qsort有一些特殊这里单独提一下。1. int cmp(const void* a, const void* b) { 2. // 1. 灵魂转换剥开泛型指针的伪装 3. int* p1 *(int**)a; 4. int* p2 *(int**)b; 5. 6. // 2. 规则一身高不同按身高降序高个子在前 7. if (p1[0] ! p2[0]) { 8. return p2[0] - p1[0]; 9. } 10. // 3. 规则二身高相同按 k 升序k 小的在前 11. else { 12. return p1[1] - p2[1]; 13. } 14. }1int* p1 *(int**)a这种写法是因为传进来的是数组元素的指针而本次使用的数组是二维数组people所以要用**a强制类型转换后再进行取值就能取到二维数组中的单一元素了。2比较两个元素的时候优先比较身高身高高的就会被排前面若不成立再比较k值小的会被排前面。3因为qsort是使用的二维数组的一维数组元素来进行比较所以元素类型为int*第三个参数就要使用sizeof(int*)。

相关新闻

VRChat角色动画高效调试:VRC-Gesture-Manager编辑模式实时预览全解析

VRChat角色动画高效调试:VRC-Gesture-Manager编辑模式实时预览全解析

1. 项目概述:为什么你需要一个高效的动画预览工具 如果你正在为VRChat制作角色,那么“动画”绝对是你投入时间最多、也最容易让人头疼的环节之一。无论是简单的表情切换,还是复杂的全身动作,都需要在Unity编辑器中反复测试、调整、…

2026/8/8 11:16:15 阅读更多 →
Godot拖拽脚本失败:禁止图标原因与系统排查指南

Godot拖拽脚本失败:禁止图标原因与系统排查指南

1. 问题现象与场景还原 最近在Godot引擎里折腾一个新项目,想给一个 Sprite2D 节点快速挂上一个自定义脚本,结果遇到了一个挺典型的“新手墙”问题:当我从文件系统面板里,把一个写好的 .gd 脚本文件拖拽到场景树(Sc…

2026/8/8 11:13:34 阅读更多 →
MyBatis Plus复合主键处理方案全解析:从Model继承到QueryWrapper实战

MyBatis Plus复合主键处理方案全解析:从Model继承到QueryWrapper实战

1. 复合主键的“坑”从何而来 最近在重构一个老项目的数据库层,把原来的MyBatis切换成了MyBatis Plus。本来想着能省不少事,毕竟那些基础的CRUD方法都不用自己写了。结果在实体类定义上就卡住了,因为表里用的是复合主键。MyBatis Plus默认的 …

2026/8/8 9:55:27 阅读更多 →

最新新闻

Unity多智能体避障:RVO2算法原理与工程实践详解

Unity多智能体避障:RVO2算法原理与工程实践详解

1. 项目概述:为什么RVO2是Unity智能体避障的“终极”选择? 如果你在Unity里做过RTS游戏、模拟城市或者任何需要大量NPC或单位移动的项目,大概率被“群体卡顿”和“鬼畜穿模”这两个问题折磨过。让几十上百个智能体(Agent&#xff…

2026/8/8 12:11:22 阅读更多 →
企微自动化办公:实现外部群聊的高级交互逻辑

企微自动化办公:实现外部群聊的高级交互逻辑

解构 RPA 技术在企业协同场景下的深度应用与自动化实践 能力介绍 在企业数字化转型的过程中,标准接口往往无法完全覆盖复杂的自动化需求。本技术方案基于 RPA(机器人流程自动化) 架构,通过对桌面端/移动端底层协议的模拟&#x…

2026/8/8 12:11:22 阅读更多 →
终极免费德州扑克GTO求解器:Desktop Postflop完全使用指南

终极免费德州扑克GTO求解器:Desktop Postflop完全使用指南

终极免费德州扑克GTO求解器:Desktop Postflop完全使用指南 【免费下载链接】desktop-postflop [Development suspended] Advanced open-source Texas Holdem GTO solver with optimized performance 项目地址: https://gitcode.com/gh_mirrors/de/desktop-postflo…

2026/8/8 12:11:22 阅读更多 →
Navicat Premium无限试用重置的完整避坑指南

Navicat Premium无限试用重置的完整避坑指南

Navicat Premium无限试用重置的完整避坑指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你是否曾在深夜赶工时&#xff0…

2026/8/8 12:11:22 阅读更多 →
CAN FD与经典CAN网络共存:网关策略与实战部署指南

CAN FD与经典CAN网络共存:网关策略与实战部署指南

1. 项目概述:当经典遇上高速,CAN网络的融合挑战 在汽车电子和工业控制领域,CAN总线堪称“老将”,以其稳定可靠、成本低廉的特性,统治了车载网络和分布式控制几十年。然而,随着智能驾驶、车载信息娱乐系统对…

2026/8/8 12:11:22 阅读更多 →
企业微信API自动加好友,10分钟搞定

企业微信API自动加好友,10分钟搞定

把重复的加好友动作交给API处理,减少人工操作成本 能力介绍 在日常运营中,加好友是一个非常高频但重复的动作。通过API配合RPA自动化能力,可以实现自动触发加好友流程,例如根据外部数据、任务规则或事件条件,自动完成…

2026/8/8 12:10:22 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →