2177 - Find Three Consecutive Integers That Sum to a Given Number (Medium)
Problem Link
https://leetcode.com/problems/find-three-consecutive-integers-that-sum-to-a-given-number/
Problem Statement
Given an integer num
, return three consecutive integers (as a sorted array) that sum to num
. If num
cannot be expressed as the sum of three consecutive integers, return an empty array.
Example 1:
Input: num = 33
Output: [10,11,12]
Explanation: 33 can be expressed as 10 + 11 + 12 = 33.
10, 11, 12 are 3 consecutive integers, so we return [10, 11, 12].
Example 2:
Input: num = 4
Output: []
Explanation: There is no way to express 4 as the sum of 3 consecutive integers.
Constraints:
0 <= num <= 10^15
Approach 1: Math
We can express it as and find what is.
If is not divisible by , then return empty array. Otherwise, calculate and return , , and .
class Solution {
public:
vector<long long> sumOfThree(long long num) {
num -= 3;
if (num % 3 == 0) {
long long n = num / 3;
return {n, n + 1, n + 2};
}
return {};
}
};
Alternatively, we can find the middle number and get the first and the third one.
class Solution {
public:
vector<long long> sumOfThree(long long num) {
if (num % 3 == 0) {
long long x = num / 3;
return {x - 1, x, x + 1};
}
return {};
}
};