// java代码
class Solution {
public int[][] findContinuousSequence(int target) {
List<int[]> vec = new ArrayList<int[]>();
int sum = 0, limit = (target - 1) / 2; // (target - 1) / 2 等效于 target / 2 下取整
for (int i = 1; i <= limit; ++i) {
for (int j = i;; ++j) {
sum += j;
if (sum > target) {
sum = 0;
break;
} else if (sum == target) {
int[] res = new int[j - i + 1];
for (int k = i; k <= j; ++k) {
res[k - i] = k;
}
vec.add(res);
sum = 0;
break;
}
}
}
return vec.toArray(new int[vec.size()][]);
}
}
from typing import List
from math import sqrt
class Solution:
def findContinuousSequence(self, target: int) -> List[List[int]]:
sum, limit = 0, target // 2
res = []
for x in range(1, limit + 1):
delta = 1 - 4 * (x - x * x - 2 * target)
if delta < 0:
continue
delta_sqrt = sqrt(delta)
y = (delta_sqrt - 1) * 0.5
if int(y) == y and y > x:
tmp = [i for i in range(x, int(y) + 1)]
res.append(tmp)
return res
if __name__ == '__main__':
solution = Solution()
target = 9
target = 15
res = solution.findContinuousSequence(target)
print(res)
from typing import List
from math import sqrt
class Solution:
def findContinuousSequence(self, target: int) -> List[List[int]]:
l, r = 1, 2
res = []
while l < r:
sum = (l + r) * (r - l + 1) * 0.5
if sum < target:
r += 1
elif sum > target:
l += 1
else:
tmp = [i for i in range(l, r + 1)]
res.append(tmp)
l += 1
return res
if __name__ == '__main__':
solution = Solution()
target = 9
target = 15
res = solution.findContinuousSequence(target)
print(res)