刷牛牛客遇到的题,想给出完整而又简洁的function(python解答,但是关键是思想,语言不是问题啦)
1.给定一个数组,数组中有正有负,求出连续
(全部都是正的时候,所有值累加就是最大值)
(全部为负的时候,max(array)就是我们想要的)
# -*- coding:utf-8 -*-
#import numpy
class Solution:
def FindGreatestSumOfSubArray(self, array):
length =len(array)
result =[]
sort_max = []
#1.全是正数的情况
#2.全是负数的情况
#3.有正有负的情况
for i in range(length-1):
for j in range(i+1,length):
result.append(sum(array[i:j]))
#全部为正时,所有累加起来就是最大的
result.append(sum(array))
#sort_ = sorted(result,reverse=False)
#找出最大值
sort_ = max(result)
#把每次得到的最大值存放在sort_max中
sort_max.append(sort_)
return max(sort_max)
2.从1-n 的正整数中出现 1 的次数:
例如 n = 11, 则 1,10,11 就出现了4次1(11算作两次,同理,111算作三次)
这里就是找出一个数学规律,这样时间复杂度最低
可以推广到任意数X:
1 - 10,在它们的个位数中,任意的 X