用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP