zoukankan      html  css  js  c++  java
  • JZ41 和为S的连续正数序列

    和为S的连续正数序列

    题目:计算有多少种连续的正数序列的和为100(至少包含两个数,输出要求序列内从小到大的顺序,序列间按照从小到大的顺序)

    思路:双指针

    func pushres(small, big int) []int {
        var tmp []int    
        for i := small; i <= big; i++ {
            tmp = append(tmp, i)
        }
        return tmp
    }
    
    func FindContinuousSequence(sum int) [][]int {
        result := [][]int{}        
        flag := 0
        if sum <= 2 {
            return result
        }
        small, big := 1, 2
        flag = small + big
        end := (1 + sum) / 2
        for small < end {//不需要判断small < big,这种情况因为small==big的情况才有可能等于sum,small<end,不可能出现这种情况
           var tmp []int//不需要每次都清空tmp
            if flag == sum {                
                tmp = pushres(small,big)
                result = append(result, tmp)
            }
    
            for (small < end) && (flag > sum) {
                flag -= small
                small++
                if flag == sum {                
                    tmp = pushres(small,big)
                    result = append(result, tmp)
                }
                
            }
            big++
            flag += big
        }
        return result
    }
  • 相关阅读:
    mysql基础以优化
    Mysql建立索引基础
    Mysql(1)
    SVN学习总结
    Github
    Java Eclipse断点调试
    Java设计模式图文详解
    代理模式
    Java——动态代理技术
    Spring基本概念理解
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14641255.html
Copyright © 2011-2022 走看看