LeetCode 754. 到达终点数字

题目描述

754. 到达终点数字

思路分析

解法一:等差和 + 奇偶性(推荐)

核心思路

  • 设累计步数和为 sum = 1 + 2 + ... + k
  • sum >= targetsum - target 为偶数时即可通过反向某些步数抵消。
  • 逐步增加 k,直到满足条件。


复杂度分析

  • 时间复杂度:O(√target),其中 target 表示目标值。
  • 空间复杂度:O(1)。
class Solution {
    public int reachNumber(int target) {
        target = Math.abs(target);
        int sum = 0;
        int k = 0;

        while (sum < target || (sum - target) % 2 != 0) {
            k++;
            sum += k;
        }

        return k;
    }
}
func reachNumber(target int) int {
	if target < 0 {
		target = -target
	}

	sum := 0
	k := 0

	for sum < target || (sum-target)%2 != 0 {
		k++
		sum += k
	}

	return k
}

相似题目

题目 难度 考察点
628. 三个数的最大乘积 简单 数学
171. Excel 表列序号 简单 数学
9. 回文数 简单 数学
67. 二进制求和 简单 数学
258. 各位相加 简单 数学
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/66938463
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!