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

力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)

力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)

文章目录

      • 力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)
      • 一、LCR 159. 库存管理 III
      • 二、450. 删除二叉搜索树中的节点
      • 三、440. 字典序的第K小数字
      • 四、LCR 127. 跳跃训练
      • 五、45. 跳跃游戏 II

一、LCR 159. 库存管理 III

题目链接:https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/description/
思路:本题让求数组中最小的前k个数,这类题目是比较常见的,一般的有求最大的k个数,最小的k个数,做法还是比较多的。
1、总体思想是需要排序,哪一种都可以,但是要兼顾时间复杂度、空间复杂度。
2、一般的做法要么是使用堆排序,要么是使用快排。
3、如果是堆排,就是维护大顶堆或者小顶堆;如果是快排,可以利用快排的特性。
4、下面的解法就是利用快排,快排的特性就是每次都把一个元素移动到最终的位置上去,且让该元素左边的都小于它,右边的都大于它。
5、那么我们就可以不全部排序,只需要不断的用快排划分区间,一旦划分到了k,就可以返回了,因为划分到了k以后,k左边的都小于它,右边的都大于它。

class Solution {public int[] inventoryManagement(int[] stock, int cnt) {if(cnt == stock.length) return stock;quickSort(stock, 0, stock.length-1, cnt);return Arrays.copyOf(stock, cnt);}void quickSort(int[] stock, int left, int right, int cnt) {if(left >= right) return;int mid = stock[left], i = left, j = right;while(i < j) {while(i < j && stock[j] >= mid) j--;while(i < j && stock[i] <= mid) i++;swap(stock, i, j);}swap(stock, left, i);if(i + 1 > cnt) quickSort(stock, left, i-1, cnt);if(i + 1 < cnt) quickSort(stock, i+1, right, cnt);}void swap(int[] stock, int left, int right) {int t = stock[left];stock[left] = stock[right];stock[right] = t;}
}

二、450. 删除二叉搜索树中的节点

题目链接:https://leetcode.cn/problems/delete-node-in-a-bst/description/
思路:本题让删除二叉搜索树中的指定元素值的节点,其实思路很简答。
1、首先明确应该分为两个步骤,第一个是找到找到对应的节点,第二个是删除对应的节点并且维持二叉搜索树的特性。
2、首先考虑遍历方式,需要利用二叉搜索树的特性从上往下搜索,处理完以后需要递归返回节点,所以采用后序遍历的遍历方式。
3、搜索到以后该如何删除?可以分为几种情况进行讨论:
3.1、如果本身就是叶子节点,那么可以直接返回null,把该节点删除。
3.2、如果该节点的左子树或者右子树为null,也可以直接返回不空的子树。
3.3、只有左右子树都不为null的情况下,需要考虑维护二叉搜索树的特性,可以找到该节点左子树中最大的节点,然后把右子树给拼接过去,或者找到该节点右子树中最小的节点,然后把左子树给拼接过去。


class Solution {public TreeNode deleteNode(TreeNode root, int key) {if(root == null) return root;if(key < root.val) {root.left = deleteNode(root.left, key);}else if(key > root.val) {root.right = deleteNode(root.right, key);}else{if(root.left == null && root.right == null) return null;if(root.left == null) return root.right;if(root.right == null) return root.left;TreeNode temp = root.left;while(temp.right != null) temp = temp.right;temp.right = root.right;return root.left;}return root;}
}

三、440. 字典序的第K小数字

题目链接:https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/description/
思路:本题让求字典序的第K小数字,所谓字典序,也就是如有1-10共10个数,字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9]。
画出来如下图所示,那么让寻找第K小的数字,其实对于下面的数结构来说,也就是通过前序遍历的方式就可以找到第K小的数字。
1、如何遍历?其实对于这个问题,因为我们要求是第K小的数字,可以把问题转变为统计以某个节点为前缀,判断该前缀下节点的数量。
2、通过节点的数量与K的大小判断是继续横向遍历还是纵向遍历。
3、如果总数N为21,k为15,以1为前缀下的节点数量只有11个,即1,和10-19.这个数是小于k的,所以要横向遍历,计算前缀为2下面的节点数量。2下面只有20,21.加和一共13个数,是小于15的,所以继续横向拓展。
在这里插入图片描述

class Solution {public int findKthNumber(int n, int k) {long root = 1;k--;while(k > 0) {int count = countNum(n, root);if(count <= k) {root++;k -= count;}else{k--;root *= 10;}}return (int)root;}int countNum(int n, long root) {long total = 0;long next = root + 1;while(root <= n) {total += Math.min(n+1, next) - root;root *= 10;next *= 10;}return (int) total;}
}

四、LCR 127. 跳跃训练

题目链接:https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/description/
思路:本题求跳跃种数,也就是每次只能跳一步或者两步,其实就是斐波那契数列,这么说就好求了,不要使用递归,递归会有大量的重复计算,可以采用动态规划,用dp数组记录下前两个所依赖的位置,即可。

class Solution {public int trainWays(int num) {long a = 1, b = 1, c = 1;for(int i = 2; i <= num; i++) {c = a + b;c = c % 1000000007;a = b;b = c;}return (int)c;}
}

五、45. 跳跃游戏 II

题目链接:https://leetcode.cn/problems/jump-game-ii/description/
思路:给定一个数组,数组中的每一个数表示可以可以往前跳跃的距离,问从Nums[0]开始跳,跳越到尾部所需的最小次数。
1、其实很简答,只需要从Nums[0]开始,维护一个右边界,然后在遍历抵达右边界的过程中,记录最远可以跳跃到的距离。
2、当抵达到了右边界,就把跳跃次数加1,把右边界设置为在此过程中记录的最远距离。
3、以此往复就可以。

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

相关文章:

力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)

力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09; 文章目录 力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09;一、LCR 159. 库存管理 III二、450. 删除二叉搜索树中的节点三、440. 字典序的第K小…...

蚁群算法原理与实战(Python、MATLAB、C++)

蚁群算法 1.蚁群算法来源 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;简称ACO&#xff09;是一种模拟自然界中蚂蚁寻找食物路径行为的优化算法&#xff0c;主要用于解决组合优化问题。它的灵感来源于意大利学者Marco Dorigo在1992年提出的蚂蚁系统模型。 蚁群算…...

HTML静态网页成品作业(HTML+CSS)——非遗阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

如何做萤石开放平台的物联网卡定向?

除了用萤石自带的4G卡外&#xff0c;我们也可以自己去电信、移动和联通办物联网卡连接萤石云平台。 1、说在前面 注意&#xff1a;以下流程必须全部走完&#xff0c;卡放在设备上才能连接到萤石云平台。 2、大致流程 登录官网→下载协议→盖章&#xff08;包括骑缝章&#…...

ptrade排坑日记——定时任务执行后,文件权限会变化。

前言 今天要和大家分享的是使用ptrade的定时任务过后&#xff0c;执行的时候&#xff0c;文件权限会发生变化&#xff01; 一、问题描述 定时任务执行后&#xff0c; /home/fly/data/fundamentals_daily/all.pickle、/home/fly/data/valuation_new/all.pickle 文件权限会从…...

TILs 评分:TCGA 肿瘤浸润淋巴细胞病理切片深度学习评分!图片下载与可视化

生信碱移 病理切片的TILs评分 TCGA 数据库是最大的肿瘤组学公开数据库之一。尽管如此&#xff0c;更多的研究往往仅局限于关注 TCGA 中各类肿瘤样本的上游组学信息或基本病理特征&#xff0c;而忽略了对样本数字化 H&E 病理染色图像的进一步应用。 ▲ TCGA中肿瘤样本的病…...

【运维】如何在浏览器中查看和管理 Cookie 信息?

如何在浏览器中查看和管理 Cookie 信息 引言 Cookie 是我们日常浏览网页时经常遇到的一个重要概念。它们用于存储用户的登录状态、偏好设置以及其他相关信息,帮助网站提供个性化的体验。然而,很多人并不清楚如何在浏览器中找到并查看这些 Cookie 信息。本文将带您了解如何在…...

Selenium实战:深度解析Python中嵌套Frame与iFrame的定位与切换技巧,解决Selenium定位不到的问题

在Web自动化测试中&#xff0c;处理网页中的Frame和iFrame是常见的挑战之一。这些元素在网页中扮演着承载独立HTML文档的角色&#xff0c;使得直接定位或操作其中的元素变得复杂。Python的Selenium库提供了强大的工具来应对这些挑战&#xff0c;本文将详细介绍如何使用Selenium…...

机器学习笔记六-朴素贝叶斯

朴素贝叶斯&#xff08;Naive Bayes&#xff09; 是一种基于贝叶斯定理的简单而强大的分类算法&#xff0c;特别适用于文本分类等高维数据集。它被称为“朴素”&#xff0c;因为它假设特征之间是相互独立的&#xff0c;这在现实中可能不完全成立&#xff0c;但这种假设在许多实…...

解决Vue3+Ts打包项目时会生成很多的map文件

正常打包会生成.js和.map文件 怎么去解决它呢&#xff1f; 正常来说我们会在vite.config.ts配置我们的项目打包方式&#xff0c;如下&#xff1a;&#xff08;我这里的target&#xff1a;es2022是为了支持模块中顶层await的使用&#xff09; // Vite 配置文件 export default…...

MeterSphere接口测试脚本断言

MeterSphere接口测试脚本断言 我们在接口自动化测试过程中&#xff0c;经常遇到无论我们传入什么数据信息&#xff0c;只要响应体报文中某个字段为不固定的特定信息&#xff08;如&#xff1a;或1或2或3&#xff09;&#xff0c;就符合预期&#xff0c;流程就可以继续&#xf…...

探索顶级PDF水印API:PDFBlocks(2024年更新)

引言 在一个敏感信息常常面临风险的时代&#xff0c;能够轻松高效地保护文档的能力至关重要。PDF水印已成为企业和个人寻求保护其知识产权、确保文件保密性的基本工具。 PDFBlocks 文字水印 API是什么&#xff1f; PDFBlocks API 提供了一个强大的解决方案&#xff0c;用于在…...

c语言开源库之uthash用法

目录 &#xff08;1&#xff09;uthash介绍和下载地址 &#xff08;2&#xff09;uthash基本用法 1.定义自己要使用的哈希表结构体 2.初始化哈希表的头指针 3.插入数据&#xff08;不同key类型对应不同函数&#xff09; 4.查找数据&#xff08;不同key类型对应不同函数&a…...

OurTV v3.1.1 — 完全免费,播放流畅的电视直播软件

OurTV是一款专业的魔改大屏版开源电视直播软件&#xff0c;与“我的电视”类似&#xff0c;内含丰富的电视频道&#xff0c;完全免费且无广告&#xff0c;画质清晰&#xff0c;播放流畅&#xff0c;提供良好的观影体验。此外&#xff0c;该软件还提供手机版。 链接&#xff1a…...

精武杯的部分复现

标红的为答案 计算机手机部分 1、请综合分析计算机和⼿机检材&#xff0c;计算机最近⼀次登录的账户名是&#xff1f;admin 2.请综合分析计算机和⼿机检材&#xff0c;计算机最近⼀次插⼊的USB存储设备串号是?S3JKNX0JA05097Y 3.请综合分析计算机和⼿机检材&#xff0c;谢弘…...

verdaccio搭建npm私服

安装verdaccio npm i verdaccio -g执行命令verdaccio启动私服 verdaccio nrm启动的私 nrm use https://privateservernpm.xxx.com/添加用户 npm adduser --registry https://privateservernpm.xxx.com/发布包到私服 npm publish删除包 npm unpublish <package-nameve…...

oracle的dataguard physical standby转 snapshot standby操作文档

oracle的dataguard physical standby转 snapshot standby操作文档 一 physical standby 转 snapshot 1.1 查看 fast recovery area 是否配置 show parameter db_recovery_file_dest如果未设置或者设置太小&#xff0c;则需要调整 alter system set db_recovery_file_destDAT…...

学懂C++(四十):网络编程——深入详解 HTTP、HTTPS 及基于 Windows 系统的 C++ 实现

目录 一、引言 二、HTTP 协议 1. HTTP 概述 2. HTTP 工作原理 3. HTTP 请求和响应格式 HTTP 请求格式 4. HTTP 状态码 三、HTTPS 协议 1. HTTPS 概述 2. HTTPS 工作原理 四、基于 Windows 系统的 C 实现 1. 准备工作 2. HTTP 客户端实现 示例代码 3. HTTPS 客户…...

Element-06.案例

一.目标 实现下面这个页面&#xff0c;表格中的数据使用axois异步加载数据 二.实现步骤 首先在vue项目的views文件夹中新建一个tlias文件夹&#xff0c;用来存储该案例的相关组件。员工页面组件&#xff08;EmpView.vue&#xff09;和部门页面组件&#xff08;DeptView.vue&…...

Axure高端交互元件库:助力产品与设计

用户体验&#xff08;UX&#xff09;和用户界面&#xff08;UI&#xff09;设计对于任何产品的成功都至关重要。为了在这个竞争激烈的市场中脱颖而出&#xff0c;设计师和产品开发团队需要依赖强大的工具来创造引人注目且功能丰富的交互界面。下面介绍一款Axure精心制作的"…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...