代码随想录算法训练营第三十一天| 455. 分发饼干、376. 摆动序列、53. 最大子数组和

[LeetCode] 455. 分发饼干

[LeetCode] 455. 分发饼干 文章解释

[LeetCode] 455. 分发饼干 视频解释

题目:

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

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

 

示例 1:

输入: g = [1,2,3], s = [1,1]
输出: 1
解释: 
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。

示例 2:

输入: g = [1,2], s = [1,2,3]
输出: 2
解释: 
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

[LeetCode] 455. 分发饼干

自己看到题目的第一想法

    把最大的给能满足的胃口最大的小孩, 依次往下.

看完代码随想录之后的想法

    差不多的想法.

class Solution {// s 代表饼干, g 代表小孩public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int result = 0;int cookieIndex = s.length - 1;int childIndex = g.length - 1;while (cookieIndex >= 0 && childIndex >= 0) {if (s[cookieIndex] >= g[childIndex--]) {cookieIndex--;result++;}}return result;}
}
class Solution {// s 代表饼干, g 代表小孩public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int result = 0;int cookieIndex = 0;int childIndex = 0;while (cookieIndex < s.length && childIndex < g.length) {if (s[cookieIndex++] >= g[childIndex]) {childIndex++;result++;}}return result;}
}

自己实现过程中遇到哪些困难

    无

[LeetCode] 376. 摆动序列

[LeetCode] 376. 摆动序列 文章解释

[LeetCode] 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:

输入:nums = [1,7,4,9,2,5]
输出:6
解释:整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3) 。

示例 2:

输入:nums = [1,17,5,10,13,15,10,5,16,8]
输出:7
解释:这个序列包含几个长度为 7 摆动序列。
其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8) 。

示例 3:

输入:nums = [1,2,3,4,5,6,7,8,9]
输出:2

[LeetCode] 376. 摆动序列

自己看到题目的第一想法

    直接看解释了~~~

看完代码随想录之后的想法

    1. 有转折的地方需要考虑是否是波峰波谷

    2. 转折的地方, 如果是从平坡专责过来的, 就要考虑平坡之前的坡的方向. 如果平坡左右两边的坡是相反的方向, 才是波峰波谷.

    3. 如果整个序列是递增和递减的, 那就只有两个波峰波谷.

class Solution {public int wiggleMaxLength(int[] nums) {int rightDiff = 0;int leftDiff = 0;int result = 1;for (int i = 0; i < nums.length - 1; i++) {rightDiff = nums[i + 1] - nums[i];if ((leftDiff >= 0 && rightDiff < 0) || (leftDiff <= 0 && rightDiff > 0)) {result++;leftDiff = rightDiff;// 注意 leftDiff 是在 if 语句里更新的}}return result;}
}
// 动态规划版本
class Solution {public int wiggleMaxLength(int[] nums) {int result = 0;int[][] dp = new int[nums.length][2];dp[0][0] = dp[0][1] = 1;// 开始节点即算波峰又算波谷???for (int i = 1; i < nums.length; i++) {dp[i][0] = dp[i][1] = 1;for (int j = 0; j < i; j++) {if (nums[j] > nums[i]) {dp[i][1] = Math.max(dp[i][1], dp[j][0] + 1);// 波谷 +1}}for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {dp[i][0] = Math.max(dp[i][0], dp[j][1] + 1);// 波峰 +1}}}return Math.max(dp[nums.length - 1][0], dp[nums.length - 1][1]);}
}

自己实现过程中遇到哪些困难

    动态规划的部分的运行流程, 感觉不是很好完全展开... 有点云里雾里的感觉.

[LeetCode] 53. 最大子数组和

[LeetCode] 53. 最大子数组和 文章解释

[LeetCode] 53. 最大子数组和 视频解释

题目:

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

子数组

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

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

提示:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4

[LeetCode] 53. 最大子数组和

自己看到题目的第一想法

    第一个反应是想到了双指针窗口(错误的逻辑): 一个 for 循环, 从左往右把数字添加进来, 计算一个结果. 如果当前结果小于上一个结果, 则说明当前数字是负数. 这时候要收缩窗口大小, 移动左侧指针.

看完代码随想录之后的想法

        我看到题目的第一反应是错误的, 因为当添加一个新的数字后, 和变的更小, 说明当前数字是负数. 而窗口无论如何搜索, 都不可能得到一个大于旧和的数了. 因此这里应该是记录住当前和, 同时跳过当前的负数, 继续向下遍历.

class Solution {public int maxSubArray(int[] nums) {int sum = 0;Integer result = null;for (int i = 0; i < nums.length; i++) {sum += nums[i];// 先把数累加起来if (result == null || result < sum) {// 如果当前总和大于 result, 则更新.result = sum;}// if (nums[i] < 0) {//  这里老是写错if (sum < 0) {sum = 0;}}return result;}
}
// 动态规划解法
class Solution {public int maxSubArray(int[] nums) {Integer result = null;int[] dp = new int[nums.length];result = dp[0] = nums[0];for (int i = 1; i < nums.length; i++) {if (dp[i - 1] < 0) {dp[i] = nums[i];} else {dp[i] = dp[i - 1] + nums[i];}if (result == null || dp[i] > result) {result = dp[i];}}return result;}
}

自己实现过程中遇到哪些困难

    看都懂... 写怎么都写不出来... T_T

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

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

相关文章

多模态模型是什么意思(国内外的AI多模态有哪些)

在人工智能和机器学习的领域&#xff0c;我们经常会遇到一些专业术语&#xff0c;这些术语可能会让初学者感到困惑。其中&#xff0c;"多模态模型"就是这样一个概念。 什么是AI多模态。它是什么意思呢&#xff1f; 那么&#xff0c;多模态模型是什么意思呢&#xff1…

【Python】数据处理:SQLite操作

使用 Python 与 SQLite 进行交互非常方便。SQLite 是一个轻量级的关系数据库&#xff0c;Python 标准库中包含一个名为 sqlite3 的模块&#xff0c;可以直接使用。 import sqlite3数据库连接和管理 连接到 SQLite 数据库。如果数据库文件不存在&#xff0c;则创建一个新数据库…

大数据如何更好地助力乡村振兴战略的实施?

大数据可以在乡村振兴战略的实施中发挥重要的作用。以下是一些大数据如何更好地助力乡村振兴战略实施的方法&#xff1a; 优化资源配置&#xff1a;通过大数据分析&#xff0c;可以了解到乡村的资源分布和利用情况&#xff0c;帮助政府和相关机构更好地进行资源调配和规划&…

Web前端Git安装:一步步引导你走进版本控制的奇妙世界

Web前端Git安装&#xff1a;一步步引导你走进版本控制的奇妙世界 在Web前端开发的广阔天地中&#xff0c;Git作为一款强大的版本控制工具&#xff0c;扮演着举足轻重的角色。本文将引导你逐步完成Git的安装过程&#xff0c;并深入探讨其在前端开发中的重要作用。我们将从四个方…

SystemVerilog Interface Class的妙用

前言 Interface Class是在SystemVerilog 2012版本中引入的&#xff0c;但目前在验证中几乎很少采用&#xff0c;大多数验证工程师要么不知道它&#xff0c;要么没有看到使用它的任何好处&#xff0c;这使得Interface Class成为一个未被充分使用和不被重视的特性。本文将举两个…

docker镜像深入理解

大家好&#xff0c;本篇文章和大家聊下docker相关的话题~~ 工作中经常有关于docker镜像的问题&#xff0c;让人百思不解 docker镜像加载到系统中到哪里去了&#xff1f;docker load 加载镜像的流程是怎样的&#xff1f;为什么容器修改内容后&#xff0c;删除容器后再次开启容…

阿里云 MQTT 服务器搭建与测试(上传和下发数据finish)

一、 MQTT 概念 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于 TCP/IP协议上,由 IBM 在 1999 年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,…

c++之旅第十弹——IO流

大家好啊&#xff0c;这里是c之旅第十弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一.流的概念&…

kNN算法-概述

所谓kNN算法就是K-nearest neigbor algorithm。这是似乎是最简单的监督机器学习算法。在训练阶段&#xff0c;kNN算法存储了标签训练样本数据。简单地说&#xff0c;就是调用训练方法时传递给它的标签训练样本会被它存储起来。 kNN算法也叫lazy learning algorithm懒惰学习算法…

计算机网络 期末复习(谢希仁版本)第8章

元文件就是一种非常小的文件&#xff0c;它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。 10. 流式&#xff1a;TCP&#xff1b;流式实况&#xff1a;UDP。

Huawei 大型 WLAN 组网 AC 间漫游

AC1配置命令 <AC6005>display current-configuration # vlan batch 100 # interface Vlanif100description to_S3_CAPWAPip address 10.0.100.254 255.255.255.0 # interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 100# ip route-stati…

浅谈单臂路由

单臂路由概述 单臂路由&#xff08;router-on-a-stick&#xff09;是一种网络设计模式&#xff0c;它允许在一个物理接口上配置多个逻辑子接口&#xff0c;以实现不同VLAN&#xff08;虚拟局域网&#xff09;之间的互联互通。这种方法通常用于那些希望在一个物理接口上连接多个…

Chrome浏览器书签同步不及时怎么办?两种方法帮你解决!

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

7种方法教你如何解决msvcp140_1.dll丢失问题,一键修复dll丢失问题

msvcp140_1.dll 是 Microsoft Visual C 2015 Redistributable 的一部分&#xff0c;它提供了运行时所需的 C 标准库的实现。这个 DLL 文件对于依赖 Visual C 2015 编译的应用程序至关重要&#xff0c;因为它包含了程序运行时所必需的函数和资源。 作用 运行时支持&#xff1a…

28-LINUX--I/O复用-epoll

一.epoll概述 epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 select、poll 有很大差异。首 先&#xff0c;epoll 使用一组函数来完成任务&#xff0c;而不是单个函数。其次&#xff0c;epoll 把用户关心的文件描述 符上的事件放在内核里的一个事件表中。从而无需像…

mysql (事物)

一.什么是事物 事物是一组操作的集合&#xff0c;不可分割的工作单位&#xff0c;事物会把所有的操作当作一个整体一起向系统提交或撤销操作请求&#xff0c;就是这些操作要么一起成功要么一起失败。 二.事物操作 &#xff08;这个就是一个理解&#xff09; 1.事务特性 原子性…

超详解——python数字和运算——小白篇

目录 1.位运算 2. 常用内置函数/模块 math模块&#xff1a; random模块&#xff1a; decimal模块&#xff1a; 3.内置函数&#xff1a; 总结&#xff1a; 1.位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符&#xff1a; 按位与&…

C语言王国——数据的内存管理

目录 一、引言 二、整形在内存中的存储 2.1 进制之间的转换 2.1.1 整形的二进制 2.1.2 十进制和二进制 2.1.3 十进制和八进制的转换 2.1.4 十六进制和十进制的转换 2.2 原码&#xff0c;反码&#xff0c;和补码 三、大、小端字节序 3.1 大小端的定义 3.2 为什么会有大…

pxe批量部署linux介绍

1、PXE批量部署的作用及必要性&#xff1a; 1&#xff09;智能实现操作系统的批量安装&#xff08;无人值守安装&#xff09;2&#xff09;减少管理员工作&#xff0c;提高工作效率3&#xff09;可以定制操作系统的安装流程a.标准流程定制(ks.cfg)b.自定义流程定制(ks.cfg(%pos…

AAAA Java

Assignment: Please download the starter code from here (https://canvas.vt.edu/courses/185343/files/33260937? wrap1) (https://canvas.vt.edu/courses/185343/files/33260937/download?download_frd1) . For your last project, you will write a memory manag…