LeetCode 最大子序和 / 最后一个单词的长度 / 加一(5)
53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
l = len(nums)
i = 0
sum = 0
MaxSum = nums[0]
while i < l:
sum += nums[i]
if sum > MaxSum:
MaxSum = sum
if sum < 0:
sum = 0
i += 1
return MaxSum
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = nums[:]
maxSum = nums[0]
for i in range(1,len(nums)):
if result[i-1]>0:
result[i] = nums[i] + result[i-1]
#当前值的大小与前面的值之和比较,若当前值更大,则取当前值,舍弃前面的值之和
if result[i]>maxSum:
maxSum = result[i]
return maxSum
58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: “Hello World”
输出: 5
要注意:s="“或” "或"a"时的情况,split不行!
class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
lenword = 0
isAlpha = False
for i in range(len(s)-1, -1, -1):
tmp = s[i]
if isAlpha == True and tmp.isalpha() == False:
break
if tmp.isalpha():
isAlpha = True
lenword += 1
return lenword
66. 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
num = ''
for i in digits:
num += str(i)
new_num = str(int(num) + 1)
new_list = [i for i in new_num]
return new_list
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
if len(digits) == 0:
digits = [1]
elif digits[-1] == 9:
digits = self.plusOne(digits[:-1])
digits.extend([0])
else:
digits[-1] += 1
return digits