IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 图解LeetCode——754. 到达终点数字(难度:中等) -> 正文阅读

[数据结构与算法]图解LeetCode——754. 到达终点数字(难度:中等)

一、题目

在一根无限长的数轴上,你站在?0?的位置。终点在?target?的位置。

你可以做一些数量的移动?numMoves?:

  • 每次你可以选择向左或向右移动。
  • 第?i?次移动(从 ?i == 1?开始,到?i == numMoves?),在选择的方向上走?i?步。

给定整数?target?,返回 到达目标所需的?最小?移动次数(即最小?numMoves?)?。

二、示例

2.1> 示例 1:

【输入】 target = 2
【输出】 3
【解释】第一次移动,从 0 到 1;第二次移动,从 1 到 -1;第三次移动,从 -1 到 2 。

2.2> 示例 2:

【输入】 target = 3
【输出】 2
【解释】第一次移动,从 0 到 1;第二次移动,从 1 到 3 。

提示:

  • -10^9?<= target <=?10^9
  • target != 0

三、解题思路

其实题目描述得有点不好理解。题意其实就是如下两个因素:

移动的方向】可以向左走或者向右走
行走的步长】第?i?步移动的距离就是?i

  • 1步,移动距离是1
  • 2步,移动距离是2
  • ……
  • 20步,移动距离是20

理解了题意之后,我们就来思考一下,如何计算到达?target?所需的?最小?移动次数(numMoves)?。我们可以针对target的值做如下2种假设:

假设1】向一个方向(向左?or?向右)移动numMoves次,正好可以到达target
假设2】向两个方向(向左?and?向右)移动numMoves次,才能到达target

“假设1”这种情况其实很好处理,我们再此就不再赘述了。主要问题是如何去处理“假设2”的这种情况,有什么好的计算办法或者规律吗??其实是有的。具体规律如下图所示:

由于2*A一定是偶数,所以找到了这个规律后,我们就可以首先只朝一个方向移动(由于target会有负数的情况,所以为了统一计算方式,我们将target取绝对值即可,即:t = Math.abs(target)),只有当移动的总距离?num?的值大于等于?t?(target的绝对值),并且?num?减?t?是偶数,才表示当前情况满足题目要求,即:满足到达 target 所需的最小移动次数。具体代码实现,请见如下部分内容。

四、代码实现

class?Solution?{
????public?int?reachNumber(int?target)?{
????????int?result?=?0,?num?=?0,?t?=?Math.abs(target);?//?由于target有负数情况,为了统一计算逻辑,所以取绝对值
????????//?直到num值大于等于t,并且num减t是偶数,才结束while循环
????????while?(num?<?t?||?(num?-?t)?%?2?!=?0)?
????????????num?+=?++result;?//?num=1+2+3+4+……
????????return?result;
????}
}

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的?点赞?&?分享?。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:49:40  更:2022-11-05 00:53:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:29:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码