我是靠谱客的博主 眼睛大发带,最近开发中收集的这篇文章主要介绍leetcode 面试题57 - II. 和为s的连续正数序列【双指针】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

方法1:

暴力法,从1~target/2遍历,判断被遍历数字之后的连续n个数字之和是否等于target,若等于,则在List中加入该数字序列组成的数组,若sum>target后,跳出本次循环,开始从下一个数字开始遍历。

class Solution {
    public int[][] findContinuousSequence(int target) {
        List<int[]> ans = new ArrayList<>();
        for(int i=1; i<=target/2; i++){
            int temp = target;
            int k = i;
            while(temp>0){
                temp = temp - k;
                k++;
                if(temp == 0){
                    int[] a = new int[k-i];
                    int b = i;
                    for(int j=0; j<a.length; j++){
                        a[j] = b;
                        b++;
                    }
                    ans.add(a);
                }
            }            
        }    
        return ans.toArray(new int[ans.size()][0]);
    }
}

方法2:

为了避免重复的遍历,可以考虑使用双指针构建滑动窗口,起始窗口为1,2,当窗口内元素之和sum小于target时,右指针右移,sum=sum+right,sum大于target时,sum=sum-left,左指针右移,当sum==target时,将left和right之间的数放入数组并添加到list中,当右指针越过target/2时,结束运算。

class Solution {
    public int[][] findContinuousSequence(int target) {
        int left = 1;
        int right = 2;
        List<int[]> res = new ArrayList<>();
        int sum = left + right;
        while(right<=target/2+1){
            if(sum < target){
                right++;
                sum+=right;
            }else if(sum > target){
                sum-=left;
                left++;
            }else{
                int[] arr = new int[right-left+1];
                int temp = left;
                for(int i=0; i<arr.length; i++){
                    arr[i] = temp;
                    temp++;
                }
                res.add(arr);
                sum-=left;
                left++;
            }
        }
        return res.toArray(new int[0][]);
    }
}

最后

以上就是眼睛大发带为你收集整理的leetcode 面试题57 - II. 和为s的连续正数序列【双指针】的全部内容,希望文章能够帮你解决leetcode 面试题57 - II. 和为s的连续正数序列【双指针】所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部