每日Leetcode—算法(6)

53. 最大子序和

输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

算法:

def lengthOfLastWord(self, s: str) -> int:
    s = 0
    ms = nums[0]
    for i in range(len(nums)):
        s += nums[0]
        if s > ms:
            ms = s
        if s < 0:
            s = 0
    return ms

分析:使用了动态规划法,间复杂度为O(n)。首先,不考虑负数的和,将基数s设置为0;然后,将前一项与后一项相加后大于前一项,则更新最大和ms,并逐步累加;遇到基数小于0就重置为0;最后输出最大和。

58. 最后一个单词的长度

输入: "Hello World",输出: 5

算法:

def lengthOfLastWord(self, s: str) -> int:
    count = 0
    res = ''
    for i in s[::-1]:
        if res != '' and i == ' ':
            return count
        if i != ' ':
            res += i
            count += 1
    return count

你可能感兴趣的:(每日Leetcode—算法(6))