zoukankan      html  css  js  c++  java
  • Leetcode笔记之57和为s的连续正数序列

    题目:

    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

    序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

    示例 1:

    输入:target = 9
    输出:[[2,3,4],[4,5]]
    

    示例 2:

    输入:target = 15
    输出:[[1,2,3,4,5],[4,5,6],[7,8]]

    解题思路:直接贪心暴力遍历,固定一个左边界1和右边界taget/2,双循环遍历就完事。值得注意的是最开始写完一直告诉我超时,
    是有个地方没优化到位,sum>target的时候就不用继续往下累加了,这一点疏忽了导致超时。

    C++代码如下:
    class Solution {
    public:
        vector<vector<int>> findContinuousSequence(int target) {
            vector<vector<int>> res;
            vector<int> x;
            int j = 1;
            int lim = (target + 1) / 2;
            int q;
            while(j <= lim)
            {
                int sum = 0;
                for(int i = j ; i <= lim ; i++)
                {
                    sum = sum + i;
                    if(sum > target)
                    {
                        sum = 0;
                        break;
                    }
                    else if(sum == target)
                    {
                        q = j;
                        for(q ; i >= q ; q++)
                        {
                            x.push_back(q);
                        }
                        res.push_back(x);
                        x.clear();
                    }
                }
                j++;
            }
            return res;
        }
    };
  • 相关阅读:
    fastjson反序列化(win环境复现)
    Struts2 S2-059 远程代码执行漏洞
    4. redis未授权漏洞复现(主从复制)
    3. redis未授权漏洞复现(写入linux计划任务反弹shell)
    2. redis未授权漏洞复现(写入webshell)tomcat环境失败
    1. redis未授权漏洞复现(写入公钥利用)
    CVE-2020-1938漏洞复现(文件读取文件包含)
    buuctf-[网鼎杯 2018]Fakebook 1
    buucitf-[极客大挑战 2020]Roamphp1-Welcome
    buuctf-web-[极客大挑战 2019]BuyFlag 1
  • 原文地址:https://www.cnblogs.com/hujinhui/p/12427989.html
Copyright © 2011-2022 走看看