Skip to content

Latest commit

 

History

History
55 lines (48 loc) · 1.26 KB

README_CN.md

File metadata and controls

55 lines (48 loc) · 1.26 KB

754. 到达终点数字

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

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

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

示例 1:

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

示例 2:

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

注意:

  • target是在[-10^9, 10^9]范围中的非零整数。

题解 (Rust)

1. 数学

impl Solution {
    pub fn reach_number(target: i32) -> i32 {
        let mut target = target;
        let mut position = 0;
        let mut step = 0;
        if target < 0 {
            target = -target;
        }
        while position < target {
            step += 1;
            position += step;
        }
        if (position - target) % 2 == 0 {
            step
        } else if step % 2 == 0 {
            step + 1
        } else {
            step + 2
        }
    }
}