题目:

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

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

每次你可以选择向左或向右移动。
第 i 次移动(从  i == 1 开始,到 i == numMoves ),在选择的方向上走 i 步。
给定整数 target ,返回 到达目标所需的 最小 移动次数(即最小 numMoves ) 。

示例 1:

输入: target = 2
输出: 3
解释:
第一次移动,从 0 到 1 。
第二次移动,从 1 到 -1 。
第三次移动,从 -1 到 2 。
示例 2:

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

提示:

-109 <= target <= 109
target != 0

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reach-a-number

我的想法:这个问题等价于将1-i之间的数字添加正负号,使得其加和为target(可以不考虑正负)。

设所有添加正号的整数和为p,添加负号的整数的和为m,有

p-m=target,

p+m = k*(k+1)/2=s

可以得到:s-target=2n(即必为2的倍数)

则题目就转化为了求最小的i,满足i*(i+1)/2 - target>=0且为偶数

代码:

class Solution

{ public int reachNumber(int target) {

if(target==0) return 0;

if(target<0) target=-target;

for(long i=1;i<=100000;i++) {

long num=i*(i+1)/2;

if(num>=target && (num-target)%2==0)

return (int)i;

} return 0;

}

}

力扣 754. 到达终点数字相关推荐

  1. 领扣-754 到达终点数字 Reach a Number MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Java实现 LeetCode 754 到达终点数字(暴力+反向)

    754. 到达终点数字 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数 ...

  3. leetcode.cn 2022年11月4日 打卡题 754. 到达终点数字【一元二次方程解法,时间复杂度O(1)】

    leetcode 2022年11月4日 打卡题 754. 到达终点数字 写在前面   首先感谢 @子不语 大佬发布的一元二次方程代码实现的启发.题解链接:子不语-754. 到达终点数字   本文侧重梳 ...

  4. LeetCode 754. 到达终点数字(数学推理)

    1. 题目 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),走 n 步. 返回到达终点需要的最小移动次数. 示例 1: ...

  5. 754. 到达终点数字

    在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数. 示例 1: 输入: ...

  6. 力扣每日一题 到达终点数字

    Day 37 Date: November 4, 2022 8:39 PM LinkedIn: https://leetcode.cn/problems/reach-a-number/descript ...

  7. 力扣 有多少小于当前数字的数字

    力扣 有多少小于当前数字的数字 题目描述 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j ...

  8. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

  9. 12.20工作学习记录 力扣 罗马文转数字

    每日一题:罗马文转数字   定义两个指针 不断后移 每一次让前一个指针的值累加为sum 最后返回sum 力扣https://leetcode.cn/problems/roman-to-integer/ ...

最新文章

  1. Java基础知识回顾
  2. git config设置用户名_一个神奇的工具,实现多人协作,git常用命令详解
  3. 管理Exchange 2003客户端访问
  4. 第123天:移动web开发中的常见问题
  5. Option,Some,None
  6. 《.NET应用架构设计:原则、模式与实践》新书博客-2.1.1-设计原则简述
  7. 自动生成数据库字典工具
  8. 【181214】VC++动画翻页效果的电话簿程序源代码
  9. 【视频插帧】XVFI: eXtreme Video Frame Interpolation
  10. java setproperty 未生效_Java System类setProperty()方法及示例
  11. IAP商品修改和数据获取,一文带你全部搞懂
  12. 樱花泪计算机音乐,樱花泪(纯音乐)
  13. Adobe Acrobat PDF修改注释作者
  14. 使用tesseract识别图片中的文字
  15. k宝无法连接计算机,农行K宝无法识别
  16. windows异常处理
  17. XSS漏洞原理及攻击
  18. 上周丢钥匙事件的反思感悟
  19. IP大混战,春节档你最看好谁?
  20. poi导出Excel文件下载数据

热门文章

  1. ArcSDE vs. Oracle Spatial 10
  2. java实现花瓣飘落效果
  3. 如何去除Word中的向下的箭头
  4. Android Binder 机制
  5. 三星s10刷linux,刷机神器TWRP布支持三星Galaxy S10+ 刷机不怕砖
  6. 微型计算机温度控制系统设计,微机原理及其应用微型计算机温度控制系统设计课程设计报告;...
  7. hdu5775 树状数组
  8. 【源码解读】liquibase之ServiceLocator
  9. ImportError: cannot import name ‘optim‘ from ‘flax‘
  10. 图片如何无缝拼接?这四个功能让你自由拼图,别错过