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
    }
  • 相关阅读:
    HTML笔记
    html文本格式化
    标题大小与字体大小的关系
    html学习笔记
    冒泡排序
    直接插入算法
    绘制针状图
    绘制矢量图
    饼图pie 或者pie3
    三维直方图
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14641255.html
Copyright © 2011-2022 走看看