美文网首页
求数组连续求和最大值

求数组连续求和最大值

作者: show16 | 来源:发表于2019-12-21 19:31 被阅读0次

题目:给出一个指定整形数组,求从数组某下标开始连续求和的”最大值“,并给出”起始“及”结束“的下标
:给定数组[-1,8,-6,7,-10,-3,3,2] 那么连续求和最大值是7,开始下标是1、结束是3,即是[8,-6,7]的和。

思路:

从数组起始位置向后遍历,抛弃和为负数的子数组,加上和为正数的子数组。(想象一个滑动窗口不停向右移动)

代码:

type Response struct {
    Start  int
    End    int
    MaxSum int
}

func CaculateMaxSum(numlist []int) Response {
    switch len(numlist) {
    case 0:
        return Response{-1, -1, 0}
    case 1:
        return Response{0, 0, numlist[0]}
    default:

    }
    sum := numlist[0]
    sumToCurrent := numlist[0]
    start, end := 0, 0
    for index, num := range numlist {
        //abando negative sum
        if sum < 0 && num > sum {
            start, end, sum = index, index, num
            sumToCurrent = num
        } else if sum > 0 && (sumToCurrent-sum)+num > 0 {
            //sum the  current  value
            start, end, sum = start, index, sumToCurrent+num
            sumToCurrent = sum
        } else {
            //update sumToCurrent
            sumToCurrent = sumToCurrent + num
        }

    }

    return Response{start, end, sum}
}


func TestCaculateMaxSum(t *testing.T){
    testlist := [][]int{
        []int{-1, 8, -7, 6, -10, -3, 3, 2},
        []int{-8, -7, -6, -10, -3, -5},
        []int{-8, -7, 6, -1, -3, 5},
    }

    for _, numlist := range testlist {
        rsp := CaculateMaxSum(numlist)
        t.Logf("start:%v, end:%v, sum:%v\n", rsp.Start, rsp.End, rsp.MaxSum)
    }
}

相关文章

  • 求数组连续求和最大值

    题目:给出一个指定整形数组,求从数组某下标开始连续求和的”最大值“,并给出”起始“及”结束“的下标如:给定数组[-...

  • 记录KVC 对集合类型的应用

    使用 KVC 可以对特定数组内容进行求和、求最大值等操作。Apple 官方地址:https://developer...

  • 2019-05-14

    日志文本筛选-sort awk 求最大值: 求最小值: 求和: 求平均值: 求最大值 求最大值 求最小值 中位数

  • 提升js幸福感的技巧

    求数组对象的最大值 求连续出现次数最多的字符 数组对象去重 数组变成对象 防抖与节流

  • python:numpy数组常用的统计函数

    数据准备: 求和 求均值 求中值 求最大值和最小值 求极值(最大值和最小值之差)、 6、标准差

  • 求连续子数组的最大和

    输入一个整数数组,求所有连续子数组的和的最大值,例如{1, -2, 3, 10, -4, 7, 2, -5},和最...

  • 剑指offer面试题----连续子数组的最大和

    题目:输入一个整型数组,数组里有整数也有负数。数组中一二或连续的多个整数组成一个子数组。求所有子数组的和的最大值。...

  • JS求最大值和数组去重

    一、求最大值: 二、数组去重:

  • 1-1 算法 - 最大连续子数组和

    一、 问题描述   给出一个一维数组,数组中的数有正有负,求该数组中连续元素之和最大值 二、暴力法 2.1 解题思...

  • 面试题31:连续子数组的最大和

    题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。...

网友评论

      本文标题:求数组连续求和最大值

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