【LeetCode】 面试题57 - II. 和为s的连续正数序列 LCOF2020年3月6日

news/2024/5/20 7:26:27 标签: 滑动窗口

题目

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

题解

思路

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

怎么用滑动窗口

在这里插入图片描述

  • 主要是解决滑动窗口移动得问题,左右端点如何移动
  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()][]);
    }
}

http://www.niftyadmin.cn/n/1684121.html

相关文章

【LeetCode】 141. 环形链表

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 一个指针作为快指针&#xff0c;另外一个指针作为慢指针&#xff0c;两个指针总会相遇 拿题目中的示例1做例子&#xff0c;每次 slow指针 移动 一 格&#xff0c;fast指针 移动 两 格 cod…

【LeetCode】 169. 多数元素 2020年3月13日

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 题目得时间复杂度肯定不小于n&#xff0c;所有得元素必须要遍历一遍之后才能知道结果 比较简单想到的就是 哈希表&#xff0c;存储好当前得值出现得次数即可&#xff0c;时间复杂度为 O(n) …

【LeetCode】 543. 二叉树的直径 2020年3月10日

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 从题目很容易想到&#xff0c;这道题要使用递归来做&#xff0c;每个节点要存储两个值&#xff0c;分别是 左子树得深度 和 右子树得深度&#xff0c;然后求得每个节点得直径即可 因为要遍历…

【LeetCode】 300. 最长上升子序列 最清晰的图解动态规划 2020年3月14日

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 思考一下&#xff0c;很容易想到使用动态规划来做这道题目 定义 dp[i] 来保存前i个元素中的最长上升子序列的元素的个数每次需要判断 nums[i] 时&#xff0c;和 nums[0] ~ nums[i-1] 进行比…

你还在犹豫刷LeetCode吗?我都刷了100道了,这份总结你必须要看一下!

前言 最近一周都没有好好刷题&#xff0c;实在是罪过呀。 很久之前就想好好的把leetcode刷一刷&#xff0c;直到最近这一个月重新开始&#xff0c;刷了一百题&#xff0c;真是可喜可贺啊哈哈 贴一贴我的刷题的记录 基本上呢&#xff0c;就是用了一个月的时间&#xff0c;每天…

【LeetCode】 695. 岛屿的最大面积 dfs 2020年3月15日

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 最先想到这个题目和之前做过的一道题很像&#xff1a; 994. 腐烂的橘子 两个题目都是 dfs的题目&#xff0c;使用 dfs 即可&#xff0c;关键就是代码要如何来写才漂亮&#xff0c;怎样才能让…

【LeetCode】 程序员金典 面试题 01.06. 字符串压缩 2020年3月16日

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 本来这道题目是不难的&#xff0c;声明count计数&#xff0c;每个字符和下一个字符进行比较&#xff0c;如果不一样就把字符和count添加进去&#xff0c;如果一样则count比较麻烦的点&#x…

【LeetCode】 383. 赎金信

题目 题目传送门&#xff1a;传送门&#xff08;点击此处&#xff09; 题解 思路 题目比较简单&#xff0c;使用hashmap即可&#xff0c;记录下每个字符出现的个数&#xff0c;然后再依次进行匹配字符是否充足&#xff0c;就能得到结果 code class Solution {public bool…