代码随想录刷题笔记-Day33

news2025/1/15 6:56:53

1. 跳跃游戏

55. 跳跃游戏icon-default.png?t=N7T8https://leetcode.cn/problems/jump-game/

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

解题思路

要得到的是一个最大可到达范围,局部的最优是当前的到达最大范围

代码

class Solution {
	public boolean canJump(int[] nums) {
		if (nums.length == 1)
			return true;
		int cover = 0;
		for (int i = 0; i <= cover; i++) {
			cover = Math.max(cover, i+nums[i]);
			if (cover >= nums.length - 1)
				return true;
		}

		return false;
	}
}

2. K次取反后最大化的数组和

1005. K 次取反后最大化的数组和icon-default.png?t=N7T8https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:

  • 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。

重复这个过程恰好 k 次。可以多次选择同一个下标 i 。

以这种方式修改数组后,返回数组 可能的最大和 。

示例 1:

输入:nums = [4,2,3], k = 1
输出:5
解释:选择下标 1 ,nums 变为 [4,-2,3] 。

示例 2:

输入:nums = [3,-1,0,2], k = 3
输出:6
解释:选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2] 。

示例 3:

输入:nums = [2,-3,-1,5,-4], k = 2
输出:13
解释:选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4] 。

解题思路

必须操作K次,所以,先把所有的负数给转为正数,然后,如果有剩余次数,在最小数的位置判断剩余次数的奇偶。

代码

class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int sum = 0;
        int index = 0;
        int min = nums[0] < 0 ? -nums[0] : nums[0];
        while (index < nums.length) {
            if (k > 0) {
                if (nums[index] >= 0) {// k未用完遇到了正数
                    if (min <= nums[index]) {// 如果最小值已经错过了,就判断是不做操作还是减去两倍的最小值
                        sum -= k % 2 == 0 ? 0 : 2 * min;
                        sum += nums[index];
                    } else {// 如果是当前,就判断是加还是减
                        sum += k % 2 == 0 ? nums[index] : -nums[index];
                    }
                    k = 0;
                } else {// k未用完并且是负数,那就加上
                    sum += min = -nums[index];
                    k--;
                }
            } else {// k用完了,正常累加
                sum += nums[index];
            }
            index++;
        }
        if (k > 0)// 未遇到正数,所以k没有经历一次用完,需要进行处理
            sum -= k % 2 == 0 ? 0 : 2 * min;
        return sum;
    }
}

3. 跳跃游戏 II

45. 跳跃游戏 IIicon-default.png?t=N7T8https://leetcode.cn/problems/jump-game-ii/

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i] 
  • i + j < n

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

解题思路

对于每一步,只需要记录到达这里的最少步数。第一想法是DP,使用一个数组进行记录。但是好像不用,在第一步范围内的为1步,在第1步骤内延伸出去的都为2步,在2步延伸出去的部分所延伸出去的都为第三步。

代码

class Solution {
	public int jump(int[] nums) {
		int step = 0;
		int cur = 0;
		int next = 0;
		for (int i = 0; i < nums.length; i++) {
            if (cur >= nums.length - 1)
				return step;
			next = Math.max(next, nums[i] + i);
			if (i == cur) {//如果step步可以到达的区域遍历完了,那么该进入step+1步可以到达的区域了,需要更新cur和next做边界
				cur = next;
				step++;
			}
		}

		return step;
	}
}

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

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

相关文章

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录 1 -> 排序的概念及其运用 1.1 -> 排序的概念 1.2 -> 常见的排序算法 2 -> 插入排序 2.1 -> 基本思想 2.2 -> 直接插入排序 2.2.1 -> 代码实现 2.3 -> 希尔排序(缩小增量排序) 2.3.1 -> 代码实现 1 -> 排序的概念及其运用 1.1 -&g…

【数字调制】OQPSK调制与解调【附MATLAB代码】

文章来源&#xff1a;微信公众号&#xff1a;EW Frontier 关注可了解更多的雷达、通信、人工智能相关代码。 QPSK信号 QPSK信号与BPSK信号的调制方法相同&#xff0c;仅调制阶数不同&#xff0c;其表达式为&#xff1a; 上式中分别表示I、Q两路的基带信息序列&#xff0c;取值…

Xcode remove the package dependency

Xcode Version 15.2 (15C500b) &#x1f914;️ 想知道直接右键&#xff0c;这个 Delete 为什么是禁用状态 推荐一下刚上线的 App 熊猫小账本&#xff0c;里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App&#xff0c;用于记录日常消费开支收入&#xff0c;使用 iCl…

Pulsar消息路由深入剖析

一、概述 大数据背景下&#xff0c;分区应该是所有组件必备的基本条件&#xff0c;否则面对海量数据时无论是计算还是存储都容易遇到瓶颈。跟其他消息系统一样&#xff0c;Pulsar通过Topic将消息数据进行业务层面划分管理&#xff0c;同时也支持Topic分区&#xff0c;通过将多…

挑战杯 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

WRF模型安装教程(ububtu系统)-- III.WRF和WPS模型的安装

六、WRF模型的安装 # 进入Build_WRF文件夹 cd Build_WRF # 下载WRFV3.9.1 wget https://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz # 解压WRF安装包并进入 tar -zxvf WRFV4.0.TAR.gz cd WRF # 安装WRF ./configure 出现如下选项&#xff1a; 选择34&#xff0c; 这里是让你选…

React进阶(Redux,RTK,dispatch,devtools)

1、初识Redux 是React最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia(Vuex)&#xff0c;可以独立于框架运行 作用&#xff1a;通过集中管理的方式管理应用的状态 案例-实现一个计数器 实现步骤&#xff1a; Redux管理数据的流程&#xff1a; state:一个对象&…

nRF52832——唯一 ID 与加密解密

nRF52832——唯一 ID 与加密解密 唯一 ID 概念唯一 ID 作用读取唯一 ID 唯一 ID 用于加密TEA 加密算法唯一 ID 的加密和解密 唯一 ID 概念 唯一 ID 作用 nRF52xx 微控制器提供一组 64 位的唯一 ID 号&#xff0c;这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器&…

Java项目:51 springboot基于springboot的社区团购系统设计012

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本基于Spring Boot的社区团购系统主要满足两种用户的需求&#xff0c;这两种用户分别为管理员和用户&#xff0c;下面将对这两种用户分别实现的…

电磁兼容EMC:一文读懂电气放电管选型设计

目录 1 GDT外观结构 2 GDT 常见品牌 3 GDT命名规则 4 GDT工作原理 5 GDT基本特点 6 GDT典型应用 7 GDT电气参数说明 7.1 DC Spark-over Voltage 直流火花放电电压&#xff08;直流击穿电压&#xff09; 7.2 Maximum Impulse Spark-over Voltage 最大冲击火花放电电压&…

Ribbon简单使用

Ribbon是Netflix发布的云中间层服务开源项目&#xff0c;其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试等。简单的说&#xff0c;Ribbon是一个客户端负载均衡器&#xff0c;我们可以在配置文件中Load Balancer后…

【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践

用免费GPU线上跑SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动&#xff0c;我很感兴趣就参加啦。之前就对chatGLM有所耳闻&#xff0c;是去年清华联合发布的开源大语言模型&#xff0c;可以用来打造个人知识库什么的&#xff0c;一直没有尝试。而SD我…

【数据结构】顺序表的实现

文章目录 **线性表(linear)&#xff1a;****顺序表****下列是需要实现的接口(Seqlist.h)****顺序表的初始化****顺序表的插入数据****顺序表的扩容(为插入数据提供保障)****顺序表的尾插****顺序表的头插****顺序表的删除数据****顺序表的尾删****顺序表的头删****查找指定位置…

下载API文档

在线看&#xff1a;Overview (Java SE 17 & JDK 17) 离线下载&#xff1a;Java Development Kit 17 Documentation

【Sql】MVCC有关问题,以及锁,日志和主从复制原理

目录 MVCC 解决什么问题? 实现原理 隐式字段 undo log Read View(读视图) InnoDB 对 MVCC 的实现 锁 分类 锁升级&#xff1f; InnoDB 的行锁&#xff1f; 死锁避免&#xff1f; 乐观锁和悲观锁 日志 主从复制原理 主从复制的作用 MySQL主从复制解决的问题 涉…

模型量化(二)—— 训练后量化PTQ(全代码)

训练后量化&#xff08;Post-training Quantization&#xff0c;PTQ&#xff09;是一种常见的模型量化技术&#xff0c;它在模型训练完成之后应用&#xff0c;旨在减少模型的大小和提高推理速度&#xff0c;同时尽量保持模型的性能。训练后量化对于部署到资源受限的设备上&…

【阿里云系列】-利用yaml文件部署NacosXxl-job到ACK

背景介绍 随着容器化的技术成熟落地&#xff0c;拥抱各种成熟的容器化集群平台是加速我们落地的必然之路&#xff0c;目前国内以阿里云、华为云、腾讯云为平台的供应商为主&#xff0c;国外则以AWS&#xff0c;Azure为主&#xff0c;让我们借助平台已有的优势进行快速落地提高…

指针【理论知识速成】(3)

一.指针的使用和传值调用&#xff1a; 在了解指针的传址调用前&#xff0c;先来额外了解一下 “传值调用” 1.传值调用&#xff1a; 对于来看这个帖子的你相信代码展示胜过千言万语 #include <stdio.h> #include<assert.h> int convert(int a, int b) {int c 0…

log4j2.xml介绍和使用

log4j2.xml是什么 log4j2.xml 是用于配置 Apache Log4j 2 的 XML 格式配置文件。Log4j 2 是一个用于 Java 应用的流行日志框架&#xff0c;提供灵活的日志管理和配置。在 log4j2.xml 文件中&#xff0c;可以配置日志记录的格式、级别、目的地等。 下面是一些主要节点和属性的…

内容管理平台原来对企业这么重要,看完收藏!

“内容为王”&#xff0c;这是当今数字化时代的一个重要真理。不论是创业新贵、还是行业巨头&#xff0c;纷纷开始深入理解和应用内容管理平台&#xff08;Content Management System&#xff0c;简称CMS&#xff09;&#xff0c;以便更好的管理其大量的内容和信息。 那么&…