美文网首页
开篇记录面试第八天

开篇记录面试第八天

作者: 一路不向西 | 来源:发表于2019-06-03 10:13 被阅读0次

    这篇应该是2号的,昨晚忘记写了,今天早上补上。
    昨天要记录的是一道题目。

    1. 题目是:给定一个数组,数组中的数字有正有负,求这个数组的连续子数组中和最大的数组,例如[1, 4, -5, 9, 8, 3, -6],和最大的就是[9,8,3],和为20。
      代码如下:
    def GetMaxAddOfArray(lists, length):
        if lists == [] or length < 1:
            return "not lists"
        # sum 当前的和
        sum = lists[0]
        max = lists[0]
        left = 0
        right = 0
        # 到i之前的sum,如果小于等于0,就从i位置开始重新计算,
        # 否则继续加上i位置的数
        # 如果sum大于max就更新max
        for i in range(1, length):
            if sum <= 0:
                sum = lists[i]
                left = i
                right = i
            else:
                sum = sum + lists[i]
                right += 1
            if sum > max:
                max = sum
        return max, left, right
                
    def main():
        array = [1, 4, -5, 9, 8, 3, -6]
        sz = len(array)
        max, left, right = GetMaxAddOfArray(array, sz)
        print(max, left, right)
        return 0
    
    main()

    相关文章

      网友评论

          本文标题:开篇记录面试第八天

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