用 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
广告