代码随想录刷题笔记-Day33

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.hqwc.cn/news/526691.html

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

相关文章

动态规划(算法竞赛、蓝桥杯)--数位DP度的数量

1、B站视频链接&#xff1a;E38 数位DP 度的数量_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N34; int a[N];//把B进制数的每一位抠出存入数组 int f[N][N];//f[i][j]表示在i个位置上&#xff0c;放置j个1的组合数 int K,B;void init(…

【Linux】线程同步与生产消费者问题

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;CP问题&#x1f449;&#x1f3fb;互斥…

[LeetCode][LCR149]彩灯装饰记录 I——二叉树的层序遍历

题目 LCR 149. 彩灯装饰记录 I 给定一棵圣诞树&#xff0c;记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。按照从左到右的顺序返回每一层彩灯编号。 示例 1&#xff1a; 输入&#xff1a;root [8,17,21,18,null,null,6] 输出&#xff1a;[8,17,…

类与对象-对象特性

师从黑马程序员 对象的初始化和清理 构造函数和析构函数 用于完成对象的初始化和清理工作 如果我们不提供构造和析构&#xff0c;编译器会提供编译器提供的构造函数和析构函数是空实现 构造函数&#xff1a;主要用于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编…

如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue

一、获取真实IP 方式1、前端调用免费公共接口获取 前端获取访问者的真实的外网ip,可以通过调用接口https://api.ipify.org/来获取。你也可以直接在网页上访问它来看自己的外网ip。 ipify介绍&#xff1a; ipify是一个免费的公共 API&#xff0c;用于获取设备的公共 IP 地址。…

杨辉三角(C语言)

杨辉三角 一.什么是杨辉三角 一.什么是杨辉三角 每个数等于它上方两数之和。 每行数字左右对称&#xff0c;由1开始逐渐变大。 第n行的数字有n项。 前n行共[(1n)n]/2 个数。 … 当前行的数上一行的数上一行的前一列的数 void yanghuisanjian(int arr[][20], int n) {for (int i…

简历--毕业论文

文章目录 MPLS VPN网络的设计与实施一、研究背景和意义二、研究内容2.1网络设计2.1.1 MPLS VPN配置思路2.1.2基本配置2.1.3 实验结果 三、结论其他 MPLS VPN网络的设计与实施 摘 要&#xff1a;本文选择研究对象是cisco的MPLS VPN网络&#xff0c;具有经济适用&#xff0c;扩展…

6. Gin集成redis

文章目录 一&#xff1a;连接Redis二&#xff1a;基本使用三&#xff1a;字符串四&#xff1a;列表五&#xff1a;哈希六&#xff1a;Set七&#xff1a;管道八、事务九&#xff1a;示例 代码地址&#xff1a;https://gitee.com/lymgoforIT/golang-trick/tree/master/14-go-redi…

【Leetcode】299. 猜数字游戏

文章目录 题目思路代码结果 题目 题目链接 你在和朋友一起玩 猜数字&#xff08;Bulls and Cows&#xff09;游戏&#xff0c;该游戏规则如下&#xff1a; 写出一个秘密数字&#xff0c;并请朋友猜这个数字是多少。朋友每猜测一次&#xff0c;你就会给他一个包含下述信息的提…

Python Web应用程序构建的最佳实践:代码实例与深度解析【第122篇—装饰器详解】

Python Web应用程序构建的最佳实践&#xff1a;代码实例与深度解析 在当今数字时代&#xff0c;构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python&#xff0c;作为一种简洁、强大的编程语言&#xff0c;为Web开发提供了丰富的工具和框架。在本篇文章中&#xff…

【前端】空间转换与动画

目录 1.空间转换 1.1位移 1.2旋转 1.3立体呈现 1.4缩放 2.动画 1.空间转换 空间&#xff1a;是从坐标轴角度定义的&#xff0c;x&#xff0c;y&#xff0c;z三条坐标轴构成了一个立体空间&#xff0c;z轴位置与视线方向相同 空间转换也叫3D转换&#xff0c;实现元素在空间…

第89篇:方程式工具包远程溢出漏洞图形界面版V0.3(内置永恒之蓝、永恒冠军、永恒浪漫等)...

Part1 前言 大家好&#xff0c;我是ABC_123。我从年前到现在&#xff0c;一直在整理曾经写过的红队工具&#xff0c;逐步把自己认为比较好用的原创工具发出来给大家用一用&#xff0c;方便大家在日常的攻防比赛、红队评估项目中解放双手&#xff0c;节省时间精力和体力。本期给…