美文网首页
和为s的连续正数序列

和为s的连续正数序列

作者: 砂壶 | 来源:发表于2020-05-04 15:25 被阅读0次

剑指offer刷题系列:

面试题57 - II. 和为s的连续正数序列

暴力解法:
针对每种解法检查是否可以等于target

/**
 * @param {number} target
 * @return {number[][]}
 */
var findContinuousSequence = function(target) {
    if(target<3) {
        return [];
    }

    let max = Math.ceil(target/2);
    let res = [];
    for(let i = 1; i < max; i++) {
        for(let j = i+ 1; j <= max; j++) {
            let sum = (i+j)*(j-i+1)/2;
            if(sum === target) {
                res.push(get(i, j));
            }
        }
    }
    return res;
};
function get(i, j) {
    let res = [i];
    let val = i; 
    while(val < j) {
        res.push(val+1);
        val++;
    }
    return res;
}

结果超出了时间限制

改用双指针,滑动窗口

/**
 * @param {number} target
 * @return {number[][]}
 */
var findContinuousSequence = function(target) {
    if(target<3) {
        return [];
    }
    let p = 1;
    let q = 2;
    let max = Math.ceil(target/2);
    let res = [];
    while(p < max && q <= max) {
        let sum = (p+q)*(q-p+1)/2;
        if(sum === target) {
            res.push(get(p, q));
            p++;
        } else if(sum < target) {
            q++;
        } else {
            p++;
        }
    }
    return res;
};
function get(i, j) {
    let res = [i];
    let val = i; 
    while(val < j) {
        res.push(val+1);
        val++;
    }
    return res;
}

关于滑动窗口,这里有篇文章讲的挺清晰的,可以参考一下:
https://zhuanlan.zhihu.com/p/107786714?utm_source=wechat_session&utm_medium=social&utm_oi=1047235829767958528

相关文章

  • Java日记2018-05-20

    第一题 和为 S 的连续正数序列 输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从...

  • 11-15题

    11、和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序...

  • 面试题57_2:和为S的连续正数序列

    和为s的连续正数序列 输入一个正数s,打印出所有何为s的连续正数序列(至少含有两个数)。 例如输入15,由于1+2...

  • 和为s的连续整数序列

    找出所有和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

  • 4.7 双指针问题(1)

    方法 暂无 注意点 暂无 目录 和为S的连续正数序列(很经典) 和为S的连续正数序列 小明很喜欢数学,有一天他在做...

  • 和为S的连续正数序列

    题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

  • 和为s的连续正数序列

    剑指offer刷题系列: 面试题57 - II. 和为s的连续正数序列 暴力解法:针对每种解法检查是否可以等于ta...

网友评论

      本文标题:和为s的连续正数序列

      本文链接:https://www.haomeiwen.com/subject/tgqyghtx.html