当前位置: 首页 > news >正文

力扣贪心算法--第一天

前言

今天是贪心算法的第一天,算法之路重新开始!

内容

之前没了解过贪心算法。

什么是贪心

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。难点就是如何通过局部最优,推出整体最优。

一、455.分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

思路:

大饼干可以满足胃口大的,也可以满足胃口小的,应该优先满足胃口大的。

这里的局部最优就是大饼干喂给胃口大的,全局最优就是喂饱尽可能多的小孩

先将饼干数组和小孩数组排序,然后从后向前遍历小孩数组,如果饼干的大小大于或等于孩子的为空则给与,否则不给予,继续寻找选一个饼干是否符合。

func findContentChildren(g []int, s []int) int {sort.Ints(g)sort.Ints(s)child:=0for sIdx:=0;sIdx<len(s)&&child<len(g);sIdx++{if s[sIdx]>=g[child]{child++}}return child
}
二、376. 摆动序列

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。

  • 例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。

  • 相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。

子序列 可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。

给你一个整数数组 nums ,返回 nums 中作为 摆动序列 的 最长子序列的长度 。

思路:

将数组用坡度表示出来,

局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值

整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列

但本题要考虑三种情况:

  1. 情况一:上下坡中有平坡
  2. 情况二:数组首尾两端
  3. 情况三:单调坡中有平坡
func wiggleMaxLength(nums []int) int {n:=len(nums)if n<2{return n}ans:=1preDiff:=nums[1]-nums[0]if preDiff!=0{ans=2}for i:=2;i<n;i++{diff:=nums[i]-nums[i-1]if preDiff<=0&&diff>0||preDiff>=0&&diff<0{ans++preDiff=diff}}return ans
}
三、53. 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

思路:

负数只会拉低总和。

局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。

全局最优:选取最大“连续和”

局部最优的情况下,并记录最大的“连续和”,可以推出全局最优

func maxSubArray(nums []int) int {maxNum:=nums[0]for i:=1;i<len(nums);i++{if nums[i]+nums[i-1]>nums[i]{nums[i]+=nums[i-1]}if nums[i]>maxNum{maxNum=nums[i]}}return maxNum
}

最后

可预见的正在变好!加油!

相关文章:

力扣贪心算法--第一天

前言 今天是贪心算法的第一天&#xff0c;算法之路重新开始&#xff01; 内容 之前没了解过贪心算法。 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。难点就是如何通过局部最优&#xff0c;推出整体最优。 一、455.分发饼干 假设你是一…...

Nginx反向代理和缓存

一、Nginx反向代理 1.调度和代理的区别&#xff1a; 1.调度基于内核层面&#xff0c;代理基于应用层面 2.代理必须实现一手托两家 3.调度不需要监听任何端口&#xff0c;不需要工作任何应用程序&#xff0c;代理需要工作和上游服务器一模一样的进程 4.调度没有并发上限&am…...

支持多元AI场景应用,宁畅“NEX AI Lab”开放试用预约中

3月29日&#xff0c;宁畅在京举行发布会&#xff0c;正式发布“全局智算”战略&#xff0c;并在会上推出战略性新品“AI算力栈”&#xff0c;旨在有效解决大模型产业落地的全周期问题。 据宁畅CTO赵雷介绍&#xff0c;“AI算力栈”集成了宁畅在AI计算领域的软硬件能力&#xff…...

Git 如何合并多个连续的提交

我平常的编程喜欢是写一段代码就提交一次&#xff0c;本地一般不攒代码&#xff0c;生怕本地有什么闪失导致白干。但这样就又导致一个问题&#xff1a;查看历史日志时十分不方便&#xff0c;随便找一段提交可以看到&#xff1a; > git log --oneline 8f06be5 add 12/qemu-h…...

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事&#xff0c;可以理解为k8s中的namespace是为了多租户&#xff0c;dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级&#xff1a; 滚动升级&#x…...

【Python项目】AI动物识别工具

目录 背景 技术简介 系统简介 界面预览 背景 成像技术在全球科技发展中扮演了关键角色。在科学研究领域&#xff0c;拍摄所得的图像成为了一种不可或缺的研究工具。特别是在生态学与动物学研究中&#xff0c;鉴于地球的广阔地域和多样的气候条件&#xff0c;利用图像技术捕…...

逻辑回归(Logistic Regression)详解

逻辑回归是一种用于解决二分类问题的统计方法&#xff0c;它通过构建一个模型来预测某个事件的概率。 以下是逻辑回归的一些关键要点&#xff1a; 适用场景&#xff1a;逻辑回归特别适合于处理二分类问题&#xff0c;即两个类别的分类问题&#xff0c;例如判断一封邮件是否为…...

.vimrc文件的语句语法

本文结构&#xff1a; a、简介 b、详细解释其中的一些常见语句和语法。 a、.vimrc 文件是 Vim 编辑器用于配置用户设置和自定义行为的文件。当 Vim 启动时&#xff0c;它会读取 .vimrc 文件中的命令和设置&#xff0c;并根据这些指令来配置编辑器的行为。 b、.vimrc 文件中…...

c语言之函数指针作形参

在一些c语言的大工程中&#xff0c;会在定义的函数中&#xff0c;把一些其他函数指针作为本函数形参。 函数指针作形参的例子 代码如下: #include<stdio.h> int max(int a,int b) { return(a>b?a:b); } int min(int a,int b) { return(a<b?a:b); } i…...

python文件的读取操作

打开文件 fopen("F:/python/helloworld/测试.txt","r",encoding"UTF-8")读取文件 print(f"读取10个字节的结果{f.read(10)}") print(f"读取全部字节的结果{f.read()}") linesf.readlines() print(f"{lines}")读…...

查看并设定【网络适配器】的优先级(跃点数)

目录 前言&#xff1a; 1.查看所有的适配器 2.修改优先级&#xff08;需要以管理员身份运行&#xff09; 跃点数&#xff08;InterfaceMetric &#xff09; DHCP 3.修改后的效果 pwoerShell 再次运行之前的程序 4.其他 参考 网络适配器1&#xff0c;8相关知识介绍1 …...

深入理解 Hadoop 上的 Hive 查询执行流程

在 Hadoop 生态系统中&#xff0c;Hive 是一个重要的分支&#xff0c;它构建在 Hadoop 之上&#xff0c;提供了一个开源的数据仓库系统。它的主要功能是查询和分析存储在 Hadoop 文件中的大型数据集&#xff0c;包括结构化和半结构化数据。Hive 在数据查询、分析和汇总方面发挥…...

JS封装网页进入/退出全屏功能,兼容各大主流浏览器

1、演示 2、封装进入全屏函数 mozRequestFullScreen&#xff1a;兼容Firefox webkitRequestFullscreen&#xff1a;兼容 Chrome、Safari、Opera msRequestFullscreen&#xff1a;兼容&#xff1a;IE/Edge const enter () > {const element document.documentElementif (el…...

el-table的复选框勾选整行变色

要实现el-table的复选框勾选整行变色&#xff0c;你可以使用element-ui提供的row-class-name属性结合scoped slot来完成。 首先&#xff0c;你需要为el-table组件添加 row-class-name 属性&#xff0c;并给它绑定一个方法。在这个方法中&#xff0c;你可以根据你的业务逻辑来判…...

一步一步写线程之八线程池的完善之二数据结构封装

一、数据容器 在前面分析过&#xff0c;不管是线程任务的封装还是同步数据队列的封装&#xff0c;都是需要一个数据结构的。一用来说&#xff0c;如果没有什么特殊的原因&#xff0c;开发者都是使用STL中数据结构。比如前面经常见到的std::queue,std::deque,std::vector,std::…...

go连接数据库(原生)

根据官网文档 Go Wiki: SQL Database Drivers - The Go Programming Language 可以看到go可以连接的关系型数据库 ​ 常用的关系型数据库基本上都支持&#xff0c;下面以mysql为例 下载mysql驱动 打开上面的mysql链接 GitHub - go-sql-driver/mysql: Go MySQL Driver i…...

【C语言】2048小游戏【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、游戏描述&#xff1a; 2048是一款数字益智类游戏&#xff0c;玩家需要使用键盘控制数字方块的移动&#xff0c;合并相同数字的方块&#xff0c;最终达到数字方块上出现“2048”的目标。 每次移动操作&#xff0c;所…...

部署项目遇到的各种问题总结

文章目录 前言一、后端问题 jar包运行出现错误宝塔面板使用jdk17二、数据库问题 版本问题三、前端问题 连不上后端总结 前言 在做完项目之后&#xff0c;为了让别人访问到自己的网站&#xff0c;就需要部署前端后端以及数据库&#xff0c;但是在部署的过程中出现了各种问题和困…...

JavaSE:抽象类和接口

目录 一、前言 二、抽象类 &#xff08;一&#xff09;抽象类概念 &#xff08;二&#xff09;使用抽象类的注意事项 &#xff08;三&#xff09;抽象类的作用 三、接口 &#xff08;一&#xff09;接口概念 &#xff08;二&#xff09;接口语法规则 &#xff08;三&a…...

发票是扫码验真好,还是OCR后进行验真好?

随着科技的进步&#xff0c;电子发票的普及使得发票的验真方式也在不断演进。目前&#xff0c;我们常见的发票验真方式主要有两种&#xff1a;一种是扫描发票上的二维码进行验真&#xff0c;另一种是通过OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别…...

自然语言处理助力法律领域AI架构,提升司法服务质量

自然语言处理助力法律领域AI架构:从技术落地到司法服务升级的全链路实践 1. 引言:法律行业的“效率痛点”与NLP的破局之路 1.1 痛点引入:当法律遇到“信息过载”与“专业门槛” 深夜十点的律师办公室里,张律师还在揉着太阳穴核对第三份合同的条款——密密麻麻的法条引用…...

别再自己造轮子了!用Python HAPI一键搞定HITRAN/HITEMP光谱计算(附避坑指南)

别再重复造轮子&#xff01;用Python HAPI高效处理HITRAN/HITEMP光谱数据 在光谱分析领域&#xff0c;许多研究者都曾陷入过这样的困境&#xff1a;为了计算某种气体的光谱特性&#xff0c;花费数周甚至数月时间研读文献、编写算法&#xff0c;结果却发现计算效率低下且结果难以…...

PyTorch 2.8 + CUDA 12.4镜像实战教程:适配10核CPU+120GB内存的完整配置

PyTorch 2.8 CUDA 12.4镜像实战教程&#xff1a;适配10核CPU120GB内存的完整配置 1. 镜像概述与环境准备 1.1 核心特性介绍 这个深度优化镜像基于RTX 4090D 24GB显卡和CUDA 12.4驱动构建&#xff0c;专为高性能深度学习任务设计。主要特点包括&#xff1a; 硬件适配&#…...

新手也能上手!高效论文写作全流程AI论文软件推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文软件按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。 …...

GLM-OCR在ComfyUI工作流中的应用:构建可视化OCR处理节点

GLM-OCR在ComfyUI工作流中的应用&#xff1a;构建可视化OCR处理节点 如果你经常用ComfyUI做图片生成或者编辑&#xff0c;可能会遇到一个挺麻烦的事儿&#xff1a;怎么把图片里的文字快速提取出来&#xff0c;然后用到下一步工作流里&#xff1f;比如&#xff0c;你想把一张海…...

别再为传感器数据缺失头疼了!用PyPOTS的SAITS模型,5分钟搞定时间序列插补(附完整代码)

工业传感器数据缺失的智能修复&#xff1a;PyPOTS与SAITS实战指南 在工业4.0时代&#xff0c;生产线上的温度、压力和振动传感器如同设备的"神经系统"&#xff0c;每秒产生海量时序数据。但当网络波动或设备故障导致数据缺失时&#xff0c;就像神经信号中断——设备状…...

CSS线性渐变实战:5分钟搞定炫酷按钮背景(附完整代码)

CSS线性渐变实战&#xff1a;5分钟搞定炫酷按钮背景&#xff08;附完整代码&#xff09; 最近在重构一个企业官网时&#xff0c;产品经理突然要求把所有按钮的纯色背景换成"更有设计感"的效果。面对30多个不同尺寸的按钮&#xff0c;手动设计图片背景显然不现实。这时…...

pyNastran:打破工程仿真壁垒的开源Python解决方案

pyNastran&#xff1a;打破工程仿真壁垒的开源Python解决方案 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 在航空航天、汽车制造等高端制造领域&#xff0c;有限元分析…...

《Cancer Discov》(IF: 33.3)|新型空间蛋白组和空间转录组整合流程解析肿瘤免疫微环境

空间转录组学和空间蛋白组学能分别在原位解析基因表达和蛋白功能状态。然而&#xff0c;它们各有自己独特的应用场景&#xff0c;例如空间转录组覆盖广但预测功能不直接&#xff0c;而空间蛋白组功能信号直接&#xff0c;靶向性高&#xff0c;能提供更多的有效生物学信息。如果…...

OpenClaw怎么搭建?2026年3月OpenClaw(Clawdbot)在腾讯云一键部署超全攻略

OpenClaw怎么搭建&#xff1f;2026年3月OpenClaw&#xff08;Clawdbot&#xff09;在腾讯云一键部署超全攻略。本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c;包含环…...