题目

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

每次你可以选择向左或向右移动。第 n 次移动(从 1 开始),可以走 n 步。

返回到达终点需要的最小移动次数。

示例 1:

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

解析

class Solution {
public:
int reachNumber(int target) {
// 理解这题的意思 这题就好做了
// 分析 首先考虑一种比较极端的情况 即一直向正方向移动n步 ,刚好达到target
// 那么target的值就等于前n步的和 ,也就是1+2+.....+n = n*(n+1)/2
// 如果n(n+1)/2>target ,那么所需要的步数肯定要比n多,而且肯定有向左走的步子,也就是求和的时候肯定是有负数的,至于哪个或者哪些个为负,下面开始讨论
//1,n(n+1)/2 - target 为偶数时,所以要想到达 target 需要向左走 n(n+1)/2 - target 偶数步 ,
// 就是把前n项中第( n(n+1)/2 - target)/2 步变为负号就行了
//当n(n+1)/2 - target 为奇数时,就要分类讨论了,若n为奇数n+1就是偶数 无论向左还是向右 都不会产生一个奇数的差来因此需要再走一步故要n+2步
//若n为偶数,n+1则为奇数,可以产生一个奇数的差,故要n+1步
if(target<0) return reachNumber(-target) ;
int i=0 ;
while(i*(i+1) < 2*target )
{
i++;
} if(i*(i+1)/2 == target) return i ;
else
{
if((i*(i+1)/2-target)%2 == 0) return i;
else
{
if(i%2==0) return i+1 ;
else return i+2 ;
}
} }
};

LeetCode 754. Reach a Number到达终点数字的更多相关文章

  1. LeetCode 754. Reach a Number

    754. Reach a Number(到达终点数字) 链接:https://leetcode-cn.com/problems/reach-a-number/ 题目: 在一根无限长的数轴上,你站在0的 ...

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

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

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

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

  4. 【Leetcode_easy】754. Reach a Number

    problem 754. Reach a Number solution1: class Solution { public: int reachNumber(int target) { target ...

  5. [Swift]LeetCode754. 到达终点数字 | Reach a Number

    You are standing at position 0 on an infinite number line. There is a goal at position target. On ea ...

  6. [LeetCode] Reach a Number 达到一个数字

    You are standing at position 0 on an infinite number line. There is a goal at position target. On ea ...

  7. 【LeetCode】754. Reach a Number 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数学 日期 题目地址:https://leetcod ...

  8. 【leetcode】Reach a Number

    题目: You are standing at position 0 on an infinite number line. There is a goal at position target. O ...

  9. 754. Reach a Number

    You are standing at position 0 on an infinite number line. There is a goal at position target. On ea ...

随机推荐

  1. BZOJ.4355.Play with sequence(线段树)

    题目链接 问题在于操作二.操作二可以拆分成:区间加\(C\).区间(对\(0\))取\(\max\). 注意到操作一的\(C\)都是非负数,即数列中不会出现负数,所以我们直接维护最小值和最小值出现的次 ...

  2. (android高仿系列)今日头条 --新闻阅读器 (转载)

    非常不错,原文地址:http://blog.csdn.net/vipzjyno1/article/details/26514543

  3. [TJOI2015]线性代数

    OJ题号:BZOJ3996 题目大意: 给定一个矩阵$B_{nn}$,矩阵$C_{1n}$,存在一个01矩阵$A_{1,n}$使得$d=(A\times B-c)\times A^\mathsf{T} ...

  4. stm32的swd接口的烧写协议是否公开的呢?

    stm32的swd接口的烧写协议是否公开的呢? 需要用一台好的示波器来抓才能有足够的存储深度,保证你能够过滤掉那个该死的50clock. 按照Arm的手册,每次转换发送方都需要一个TNR---但是我观 ...

  5. go标准库DOC与 raft

    http://studygolang.com/static/pkgdoc/index.html https://github.com/avelino/awesome-go#database

  6. uistatusBar 详解

    成功的方法: 方法1.隐藏应用程序内所有的StatusBar 第一步:在Info.plist,然后添加一个新的row,"View controller-based status bar ap ...

  7. Netbeans 安装emmet插件

    一.下载插件 http://plugins.netbeans.org/plugin/48315/emmet 二.点击工具-> 插件 -> 已下载 -> 添加插件 ->(导入下载 ...

  8. HTML5学习笔记简明版(8):新增的全局属性

    contenteditable属性 不论什么元素使用contenteditable属性的话,代表该元素是一个可编辑的区域. 用户能够改变元素的内容以及操作标记.比如: <p contentedi ...

  9. 为网卡配置多个IP地址(windows)

    转自:https://jingyan.baidu.com/article/fcb5aff7e0fd76edaa4a71d3.html 为电脑配置多个IP,免去到不同地点需要更改IP的烦恼. 譬如电脑在 ...

  10. SharePoint 表单认证创建用户

    前言 本文介绍如何在SharePoint表单登陆中添加表单用户,前提是已经配置了表单认证,如果没配置表单登陆,需要先配置表单登陆: 1. 打开Visual Studio,如下图: 2. 新建一个项目 ...