2177-找到和为给定整数的三个连续整数

Raphael Liu Lv10

给你一个整数 num ,请你返回三个连续的整数,它们的 为 _ _num 。如果 num
无法被表示成三个连续整数的和,请你返回一个 数组。

示例 1:

**输入:** num = 33
**输出:** [10,11,12]
**解释:** 33 可以表示为 10 + 11 + 12 = 33 。
10, 11, 12 是 3 个连续整数,所以返回 [10, 11, 12] 。

示例 2:

**输入:** num = 4
**输出:** []
**解释:** 没有办法将 4 表示成 3 个连续整数的和。

提示:

  • 0 <= num <= 1015

方法一:数学

思路与算法

一个数 num 能表示成三个连续整数的和,当且仅当 num 是 3 的倍数,此时三个整数分别为:

\textit{nums} }{3} - 1, \textit{nums} }{3}, \textit{nums} }{3} + 1

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
class Solution {
public:
vector<long long> sumOfThree(long long num) {
if (num % 3 == 0) {
return {num / 3 - 1, num / 3, num / 3 + 1};
}
return {};
}
};
[sol1-Python3]
1
2
3
4
5
class Solution:
def sumOfThree(self, num: int) -> List[int]:
if num % 3 == 0:
return [num // 3 - 1, num // 3, num // 3 + 1]
return []

复杂度分析

  • 时间复杂度:O(1)。

  • 空间复杂度:O(1)。

 Comments
On this page
2177-找到和为给定整数的三个连续整数