我是靠谱客的博主 专注蚂蚁,最近开发中收集的这篇文章主要介绍【LeetCode】 面试题57 - II. 和为s的连续正数序列 LCOF2020年3月6日,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

题目传送门:传送门(点击此处)
在这里插入图片描述

题解

思路

其实有数学方法,我实在是不太会。。。
于是我选择了滑动窗口来解决这个问题

怎么用滑动窗口

在这里插入图片描述

  • 主要是解决滑动窗口移动得问题,左右端点如何移动
  1. 如果 i-j 的和值相加大于 target 得时候,左边界向右移动
  2. 如果 i-j 的和值相加小于 target 得时候,右边界向右移动
  3. 如果 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日所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部