解法
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n==0 or n==1:
return 1
a,b=1,2
while n>2:
a,b=b,a+b
n-=1
return b
解法一:
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
sum=0
max_sub_sum=nums[0]
for num in nums:
sum=sum+num
if sum >max_sub_sum:
max_sub_sum=sum
if sum<0:
sum=0
return max_sub_sum
-2——>1—— -3——4—— -1——2——1—— -5——4
sum -2 1 -3 4 3 5 6 1 3
max 1 1 4 4 5 6 6 6 6
解法二
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums)==0:
return None
import sys
res=nums[0]
f_n=-1
for i in nums:
f_n=max(i,i+f_n)
res=max(res,f_n)
return res
解法一
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
if len(prices)==0:
return 0
minValue=prices[0]
maxdiff=0
for i in range(1,len(prices)):
if prices[i]<minValue:
minValue=prices[i]
else:
diff=prices[i]-minValue
maxdiff=max(diff,maxdiff)
return maxdiff
解法二
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
min_price = float('inf')
max_profit = 0
for price in prices:
if price < min_price:
min_price = price
elif (price - min_price) > max_profit:
max_profit = price - min_price
return max_profit
解法一
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return 0
D = [0 for _ in nums]
for index,num in enumerate(nums):
if index == 0:
D[index] = num
elif index == 1:
D[index] = max(D[index-1],num)
else:
D[index] = max(D[index-2]+num,D[index-1])
return D[-1]
解法二
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums)==0:
return 0
memo=[]
memo.append(nums[0])
for i in range(1,len(nums)):
current=nums[i]+memo[i-2] if i-2>=0 else nums[i]
pre=nums[i-1]+memo[i-3] if i-3>=0 else nums[i-1]
memo.append(max(current,pre))
return memo[-1]
算法的主要思想是拿当前元素值nums[i]与记录值memo[i-2]相加对比nums[i-1]与memo[i-1-2]相加的结果取最大值。