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

为啥找对象千万别找大厂男,还好我不是大厂的。。

在这里插入图片描述

网上看到一大厂女员工发文说:找对象千万别找大厂男,理由说了一大堆,无非就是大厂男为了逃避带娃,以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。

网友精彩评论:

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第45题:跳跃游戏 II。

问题描述

来源:LeetCode第45题

难度:中等

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

1,0 <= j <= nums[i]

2,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

  • 1 <= nums.length <= 10^4

  • 0 <= nums[i] <= 1000

  • 题目保证可以到达 nums[n-1]

问题分析

这题让计算的是跳到数组的最后需要跳跃的最小次数,第一次跳跃是站在下标为0的位置开始跳的。

我们可以用一个变量preRange表示上一次跳跃所能到达的范围,然后在这个范围内记录跳跃所能达到的最远距离curFarthest,计算的时候如果超过preRange这个范围就表示需要再跳一次,然后更新preRange的值为curFarthest。

我们以示例一为例画个图来看下,第一次可以跳跃的范围是[1,2],这里指的是下标,实际上还可以跳到下标为0的位置,如果第一次还跳到下标为0就表示没跳,我们不要记录了。

第二次可以从下标为1或下标为2的位置开始跳,从下标为1的位置可以跳到[2,3,4],从下标为2的位置可以跳到[3],所以第二次就可以跳到数组的末尾了,只需要两次即可。

JAVA:

public int jump(int[] nums) {int jumps = 0;// 最小跳跃次数int preRange = 0;// 上一次起跳的范围int curFarthest = 0;// 从上一次起跳范围内所能跳的最远距离。for (int i = 0; i < nums.length - 1; i++) {// 计算从当前位置跳跃所能到大的最远距离,并更新curFarthest。curFarthest = Math.max(curFarthest, i + nums[i]);// 如果上一个跳远范围内都计算完了,就要重新开始跳了。if (i == preRange) {jumps++;preRange = curFarthest;}}return jumps;
}

C++:

public:int jump(vector<int>& nums) {int jumps = 0;// 最小跳跃次数int preRange = 0;// 上一次起跳的范围int curFarthest = 0;// 从上一次起跳范围内所能跳的最远距离。for (int i = 0; i < nums.size() - 1; i++) {// 计算从当前位置跳跃所能到大的最远距离,并更新curFarthest。curFarthest = max(curFarthest, i + nums[i]);// 如果上一个跳远范围内都计算完了,就要重新开始跳了。if (i == preRange) {jumps++;preRange = curFarthest;}}return jumps;}

C:

int jump(int *nums, int numsSize) {int jumps = 0;// 最小跳跃次数int preRange = 0;// 上一次起跳的范围int curFarthest = 0;// 从上一次起跳范围内所能跳的最远距离。for (int i = 0; i < numsSize - 1; i++) {// 计算从当前位置跳跃所能到大的最远距离,并更新curFarthest。curFarthest = fmax(curFarthest, i + nums[i]);// 如果上一个跳远范围内都计算完了,就要重新开始跳了。if (i == preRange) {jumps++;preRange = curFarthest;}}return jumps;
}

Python:

def jump(self, nums: List[int]) -> int:# 最小跳跃次数# 上一次起跳的范围# 从上一次起跳范围内所能跳的最远距离。jumps, preRange, curFarthest = 0, 0, 0for i in range(len(nums) - 1):# 计算从当前位置跳跃所能到大的最远距离,并更新curFarthest。curFarthest = max(curFarthest, i + nums[i])# 如果上一个跳远范围内都计算完了,就要重新开始跳了。if i == preRange:jumps += 1preRange = curFarthestreturn jumps

相关文章:

  • Python武器库开发-武器库篇之链接提取器(六十)
  • 【跟我学RISC-V】(三)openEuler特别篇
  • 园区无线网新架构:无CAPWAP的集中式转发
  • 一文详解:什么是小程序SDK?
  • java1.8运行arthas-boot.jar运行报错解决
  • 编程属于什么类学科门类:深入探索与解析
  • PDM 测试
  • idea自定义注释模板
  • Github 2024-06-15Rust开源项目日报Top10
  • 77道经典的软件测试面试题(答案+文档)
  • Windows Server 远程桌面显示登录界面而不是直接登录进入的问题
  • [Cloud Networking] Layer3 (Continue)
  • CCAA质量管理【学习笔记】​​ 备考知识点笔记(五)质量设计方法与工具
  • Tomcat Websocket应用实例研究
  • 使用高斯混合模型(GMM)进行猫狗音频聚类(Kaggle Audio Cats and Dogs)
  • [译]CSS 居中(Center)方法大合集
  • Cumulo 的 ClojureScript 模块已经成型
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Odoo domain写法及运用
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring-boot 启动时碰到的错误
  • 分布式熔断降级平台aegis
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 前端设计模式
  • 使用 QuickBI 搭建酷炫可视化分析
  • 算法-图和图算法
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • scrapy中间件源码分析及常用中间件大全
  • ​configparser --- 配置文件解析器​
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #162 (Div. 2)
  • #考研#计算机文化知识1(局域网及网络互联)
  • (12)Linux 常见的三种进程状态
  • (2)空速传感器
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (SpringBoot)第二章:Spring创建和使用
  • (算法)求1到1亿间的质数或素数
  • (转)C#调用WebService 基础
  • ***原理与防范
  • .DFS.
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net - 类的介绍
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net 知识杂记
  • .Net中ListT 泛型转成DataTable、DataSet
  • ::什么意思
  • :not(:first-child)和:not(:last-child)的用法
  • @JsonSerialize注解的使用
  • @RestControllerAdvice异常统一处理类失效原因
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ IO.File ] FileSystemWatcher