我是靠谱客的博主 专注蚂蚁,最近开发中收集的这篇文章主要介绍【LeetCode】 面试题57 - II. 和为s的连续正数序列 LCOF2020年3月6日,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
题目 |
题目传送门:传送门(点击此处)
题解 |
思路
其实有数学方法,我实在是不太会。。。
于是我选择了滑动窗口来解决这个问题
怎么用滑动窗口
- 主要是解决滑动窗口移动得问题,左右端点如何移动
- 如果
i-j
的和值相加大于target
得时候,左边界向右移动 - 如果
i-j
的和值相加小于target
得时候,右边界向右移动 - 如果
i-j
的和值相加等于target
得时候,左边界向右移动,这时状态又回到了小于target
的时候
code
class Solution {
public int[][] findContinuousSequence(int target) {
int i = 1; // 滑动窗口的左边界
int j = 1; // 滑动窗口的右边界
int sum = 0; // 滑动窗口中数字的和
List<int[]> resList = new ArrayList<>();
while (i <= target / 2) {
if (sum < target) { // 右边界向右移动
sum += j;
j++;
} else if (sum > target) { // 左边界向右移动
sum -= i;
i++;
} else {
int[] arr = new int[j - i];
for (int k = i; k < j; k++) {
arr[k - i] = k;
}
// 左边界向右移动
resList.add(arr);
sum -= i;
i++;
}
}
return resList.toArray(new int[resList.size()][]);
}
}
最后
以上就是专注蚂蚁为你收集整理的【LeetCode】 面试题57 - II. 和为s的连续正数序列 LCOF2020年3月6日的全部内容,希望文章能够帮你解决【LeetCode】 面试题57 - II. 和为s的连续正数序列 LCOF2020年3月6日所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复