用 C++到达我们数字


假设您站在无限数轴上的位置 0。现在,目标是位置 target。每次移动,您都可以向左侧或右侧移动。在第 n 次移动(从 1 开始)中,您需要走 n 步。我们必须找出到达目的地所需的最小步数。因此,如果输入为 target = 3,则我们需要 2 步。从 0 到 1,从 1 到 3。

要解决这个问题,我们将按照以下步骤进行 -

  • target := |target|, cnt := 0
  • 在 target > 0 时,
    • cnt 减 1
    • target := target –cnt
  • 如果 target 为偶数,则返回 cnt,否则返回 cnt + 1 + cnt 模 2

让我们了解一下以下实现以获得更好的理解 -

示例

 实战演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int reachNumber(int target) {
      target = abs(target);
      int cnt = 0;
      while(target > 0){
         target -= ++cnt;
      }
      return target % 2 == 0? cnt : cnt + 1 + cnt % 2;
   }
};
main(){
   Solution ob;
   cout << (ob.reachNumber(3));
}

输入

3

输出

2

更新于: 04-May-2020

175 次浏览

启动您的 职业

通过完成课程获得认证

开始
广告