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

贪心算法 greedy

文章目录

  • 参考
  • 贪心算法
  • [Leetcode455 分发饼干](https://leetcode.cn/problems/assign-cookies/description/)
    • 分析
    • 题解
  • [Leetcode135 分发糖果](https://leetcode.cn/problems/assign-cookies/description/)
    • 分析
    • 题解
  • leetcode435无重叠区间
    • 分析
    • 题解

参考

https://github.com/changgyhub/leetcode_101

贪心算法

每次操作都是局部最优的,从而整体操作是最优的。

Leetcode455 分发饼干

分析

为了更多孩子能拿到饼干,对每个孩子的要求是“尽量给没拿到饼干的孩子留更多饼干”,换句话说就是“自己尽量拿更小的饼干”。因此可以对饼干排序,方便孩子挑选最小的。
不对孩子排序也可以实现分配。但是对孩子排序可以使用双指针提升计算效率。

题解

class Solution {public int findContentChildren(int[] g, int[] s) {// 将饼干大小和孩子胃口从小到大排序Arrays.sort(g);Arrays.sort(s);int count = 0; // count表示拿到饼干的孩子数量for (int i = 0, j = 0; i < g.length && j < s.length; i++, j++) {while (j < s.length && g[i] > s[j]) { // 当前饼干不满足孩子胃口,则选择下一个更大的饼干j++;}if (j < s.length) {count++;}}return count;}
}

Leetcode135 分发糖果

分析

题目要求:每个孩子至少分配到 1 个糖果。为了更少分配糖果,设置每个孩子的初始糖果数为1.
题目要求:相邻两个孩子评分更高的孩子会获得更多的糖果。为了更少分配糖果,如果孩子评分更高,只比相邻1个糖果。
这里的相邻包括左邻和右邻。先从左到右遍历孩子,如果当前孩子比左边孩子评分更高,则糖果数=左孩糖果数加1.完成遍历后,满足左邻条件。再从右往左遍历孩子,如果当前孩子比右边孩子评分更高,则糖果数=右孩糖果数加1。为了同时满足两个相邻条件,糖果数取两次遍历的最大值。

题解

class Solution {public static int candy(int[] ratings) {int[] candies = new int[ratings.length];Arrays.fill(candies, 1); // 每个孩子初始糖果数为1for (int i = 1; i < ratings.length; i++) { // 从左到右遍历if (ratings[i] > ratings[i - 1]) {candies[i] = candies[i - 1] + 1;}}for (int i = ratings.length- 2; i >= 0; i--) { // 从右往左遍历if (ratings[i] > ratings[i + 1]) {candies[i] = Math.max(candies[i + 1] + 1, candies[i]); // 取最大值}}int res = 0;for (int candy : candies) {res += candy;}return res;}
}

leetcode435无重叠区间

分析

为了不重叠且留下更多区间,每次被留下的区间的要求是“给后来者留更多空间”,即空间结束得更早。
因此按照区间的结束序号从小到大排序,每次都留下结束时间最早的,然后往后遍历,删去重叠的。

题解

class Solution {public int eraseOverlapIntervals(int[][] intervals) {if (intervals.length == 0) {return 0;}Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] o1, int[] o2) {return o1[1] - o2[1];}}); // 对结束序号排序int count = 0;int rightIndex = intervals[0][1]; // 留下的区间的结束序号for (int i = 1; i < intervals.length; i++) {if (intervals[i][0] < rightIndex) { // 被删除区间count++;} else {rightIndex = intervals[i][1]; // 留下的区间的结束序号}}return count;}
}

相关文章:

贪心算法 greedy

文章目录 参考贪心算法[Leetcode455 分发饼干](https://leetcode.cn/problems/assign-cookies/description/)分析题解 [Leetcode135 分发糖果](https://leetcode.cn/problems/assign-cookies/description/)分析题解 leetcode435无重叠区间分析题解 参考 https://github.com/ch…...

基于python的家教预约网站-家教信息平台系统

标题:基于 Python 的家教预约网站-家教信息平台系统 内容:1.摘要 本文介绍了一个基于 Python 的家教预约网站-家教信息平台系统。该系统旨在为学生和家长提供一个方便、高效的家教预约平台&#xff0c;同时也为家教老师提供一个展示自己教学能力和经验的机会。本文详细介绍了系…...

基于深度学习多图像融合的屏幕缺陷检测方案

公司项目&#xff0c;已申请专利。 深度学习作为新兴技术在图像领域蓬勃发展&#xff0c;因其自主学习图像数据特征的性能避免了人工设计算法的繁琐&#xff0c;精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能&#xff0c;使得深度学习技术在…...

MySQL基础笔记(三)

在此特别感谢尚硅谷-康师傅的MySQL精品教程 获取更好的阅读体验请前往我的博客主站! 如果本文对你的学习有帮助&#xff0c;请多多点赞、评论、收藏&#xff0c;你们的反馈是我更新最大的动力&#xff01; 创建和管理表 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数…...

【JetPack】WorkManager笔记

WorkManager简介&#xff1a; WorkManager 是 Android Jetpack 库中的一个重要组件。它用于处理那些需要在后台可靠执行的任务&#xff0c;这些任务可以是一次性的&#xff0c;也可以是周期性的&#xff0c;甚至是需要满足特定条件才执行的任务。例如&#xff0c;它可以用于在后…...

docker 安装 ftp

前言 经多次测试 不知道为什么 必须添加被动模式跟端口才可以 连接成功&#xff0c;有知道为什么可以评论下 下载镜像 docker pull fauria/vsftpd启动ftp 服务 参考链接 docker run -d -v /etc/localtime:/etc/localtime:ro -v /home/dr/data/ftp:/home/vsftpd \ -e "…...

5.C语言内存分区-堆-栈

目录 内存分区 运行之前 代码区 全局初始化数据区 、静态数据区 (data) 未初始化数据区(bss&#xff08;Block Started by Symbol&#xff09;区) 总结 运行之后 代码区 &#xff08;text segment&#xff09; 未初始化数据区(bss) 全局初始化数据区&#xff0c;静态…...

传统CV算法——基于opencv的答题卡识别判卷系统

基于OpenCV的答题卡识别系统&#xff0c;其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术&#xff0c;自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述&#xff1a; 1. 导入必要的库 系统首先导入…...

国产 HighGo 数据库企业版安装与配置指南

国产 HighGo 数据库企业版安装与配置指南 1. 下载安装包 访问 HighGo 官方网站&#xff08;https://www.highgo.com/&#xff09;&#xff0c;选择并下载企业版安装包。 2. 上传安装包到服务器 将下载的安装包上传至服务器&#xff0c;并执行以下命令&#xff1a; [rootmas…...

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件

本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息&#xff0c;页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…...

Springboot @Transactional使用时需注意的几个问题

一、事务的隔离级别 在Springboot应用中&#xff0c;如果我们想实现方法一旦执行有异常产生&#xff0c;就触发事务回滚&#xff0c;可以在方法上面添加Transactional注解。如果应用采用mysql数据库&#xff0c;虽然mysql本身也有事务隔离机制&#xff0c;但在Sping数据库的应…...

数字经济下的 AR 眼镜

目录 1. &#x1f4c2; AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. &#x1f531; 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. &#x1f4a…...

力扣150题

88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 **注意&#xff1a;**…...

剑指offer搜索二维矩阵

题目连接 https://leetcode.cn/problems/search-a-2d-matrix-ii/’ 代码 自己想出来的 解法一 初始化两个指针&#xff0c;i0,j列数-1 若此时matrix[i][j]target 则返回true 若此时matrix[i][j]>target,表明在第j列中不可能存在target&#xff0c;因为列是升序的 若此时ma…...

如何设置浏览器不缓存网页

设置浏览器不缓存网页可以通过多种方法实现&#xff0c;以下是一些常见的策略&#xff1a; HTTP响应头控制&#xff1a; Cache-Control&#xff1a;这是最常用的HTTP头之一&#xff0c;用于控制响应的缓存行为。例如&#xff1a; Cache-Control: no-cache, no-store, must-r…...

Iris简单实现Go web服务器

package mainimport ("github.com/kataras/iris" )func main() {app : iris.New() // 实例一个iris对象//配置路由app.Get("/", func(ctx iris.Context) {ctx.WriteString("Hello Iris")})app.Get("/aa", func(ctx iris.Context) {ct…...

后端项目java中字符串、集合、日期时间常用方法

我这里只介绍了项目中最常用的哈,比如像集合有很多,但我们最常用的就是ArrayList。 然后我这里会以javascript中的字符串、数组的方法为基准来实现,有些方法js和java会有些区别也会介绍 字符串 每次修改 String 对象都会创建一个新的对象,而 StringBuffer 可以在同一个对象…...

【Spring事务】深入浅出Spring事务从原理到源码

什么是事务 保证业务操作完整性的一种数据库机制 &#xff08;driver 驱动&#xff09;事务特定 ACID A 原子性 &#xff08;多次操作 要不一起成功 要不一起失败 &#xff08;部分失败 savepoint&#xff09;&#xff09; C 一致性 &#xff08;事务开始时数据状态&#xff0c…...

vue.js滑动到顶便锁定位置

<template><div><div class"nav"></div><div class"searchBar" id"searchBar"><ul :class"searchBarFixed true ? isFixed :"> <li>区域<i class"iconfont icon-jiantouxia"…...

EdgeX Core Service 核心服务之 Core Command 命令

EdgeX Core Service 核心服务之 Core Command 命令 一、概述 Core-command(通常称为命令和控制微服务)可以代表以下角色向设备和传感器发出命令或动作: EdgeX Foundry中的其他微服务(例如,本地边缘分析或规则引擎微服务)EdgeX Foundry与同一系统上可能存在的其他应用程序…...

掌握常用HTML标签:创建个人简介网页

任务目标 理解HTML文档的基本结构&#xff0c;掌握常见的HTML标签及其用途&#xff0c;创建一个简单的个人简介网页。 学习内容脑图 #mermaid-svg-5GTdqH41gawr4v0h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

音视频学习(二十五):ts

TS&#xff08;MPEG-TS&#xff0c;MPEG Transport Stream&#xff09; 是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG&#xff08;Moving Picture Experts Group&#xff09;组织制定&#xff0c;用于视频和音频的压缩编码。在 HLS&#xff08;HTTP Live Stream…...

10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹

本文记录当前最新版虚拟机VMware Workstation Pro&#xff08;2024.12&#xff09;如何在win11下共享文件&#xff0c;以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机&#xff0c;打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…...

单元测试mock框架Mockito

为了继续改进 Mockito 并进一步改善单元测试体验&#xff0c;我们希望您升级到 2.1.0&#xff01;Mockito 遵循语义版本控制&#xff0c;仅在主要版本升级时包含重大更改。在库的生命周期中&#xff0c;重大更改是推出一组全新功能所必需的&#xff0c;这些功能会改变现有行为甚…...

Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…...

2024多模态大模型综述最新总结

摘要 随着人工智能技术的快速发展&#xff0c;多模态大模型&#xff08;MLLM&#xff09;已成为研究的新热点。这些模型以强大的大型语言模型&#xff08;LLM&#xff09;为基础&#xff0c;能够处理和理解多种模态信息&#xff0c;如文本、图像、视频和音频。本文综述了MLLM的…...

Redis——缓存穿透

文章目录 1. 问题介绍1.1 定义1.2 举例 2. 解决方案2.1 方案一&#xff1a;空值缓存2.1.1 做法2.1.2 举例2.1.3 示例代码2.1.4 优点2.1.5 缺点 2.2 方案二&#xff1a;布隆过滤器2.2.1 思想2.2.2 做法2.2.3 示例代码2.2.4 优点2.2.5 缺点 2.3 方案三&#xff1a;限流3. 总结 1.…...

1.gitlab 服务器搭建流程

前提条件&#xff1a; 一、服务器硬件水平 搭建gitlab服务器最低配置要求2核4G,低于这个配置的服务器运行效果很差。 gitlab官网&#xff1a;https://about.gitlab.com/ 下载地址&#xff1a;gitlab/gitlab-ce - Packages packages.gitlab.com 本机ubuntu 二、安装依赖 su…...

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件&#xff0c;包括移动订单进度跟踪和向客户发送营销通信&#xff08;交易和促销&#xff09;。 统一事件平台&#xff08;unified eve…...

GTID详解

概念和组成 1&#xff0c;全局事务表示&#xff1a;global transaction identifiers 2, GTID和事务一一对应&#xff0c;并且全局唯一 3&#xff0c;一个GTID在一个服务器上只执行一次 4&#xff0c;mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…...