国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python語言描述最大連續子序列和

2020-02-16 10:56:57
字體:
來源:轉載
供稿:網友

求最大連續子序列的和是一個很經典很古老的面試題了,記得在剛畢業找工作面試那會也遇到過同款問題。今兒突然想起來,正好快到畢業季,又該是苦逼的應屆生們各種面試的時候到了,就給寫了一些小代碼解決這個問題。也希望各位找工作的同志們都拿到心目中理想的offer,從此以后,戰勝高富帥,贏取白富美,走上人生巔峰。

1.問題描述

假設有一數組(python里為list啦)[1,3,-3,4,-6,-1],求數組中最大連續子序列的和。例如在此數組中,最大連續子序列的和為5,即1+3+(-3)+4 = 5

2.O(n2)的解法

最簡單粗暴的方式,雙層循環,用一個maxsum標識最大連續子序列和。然后每次判斷更新。沒有太多可以說的,直接上代碼

def maxSum(list):  maxsum = list[0]  for i in range(len(list)):    maxtmp = 0    for j in range(i,len(list)):      maxtmp += list[j]      if maxtmp > maxsum:        maxsum = maxtmp  return maxsumif __name__ == '__main__':  list = [1,3,-3,4,-6]  maxsum = maxSum(list)  print "maxsum is",maxsum

運行結果

maxsum is 5

3.O(n)解法

在任何講動態規范的地方都能找到求最大連續子序列和的例子。具體來說,假設數組為a[i],因為最大連續的子序列和必須是在位置0-(n-1)之間的某個位置結束。那么,當循環遍歷到第i個位置時,如果其前面的連續子序列和小于等于0,那么以位置i結尾的最大連續子序列和就是第i個位置的值即a[i]。如果其前面的連續子序列和大于0,則以位置i結尾的最大連續子序列和為b[i] = max{ b[i-1]+a[i],a[i]},其中b[i]就是指最大連續子序列的和。

def maxSum(list_of_nums):  maxsum = 0  maxtmp = 0  for i in range(len(list_of_nums)):    if maxtmp <= 0:      maxtmp = list_of_nums[i]    else:      maxtmp += list_of_nums[i]    if(maxtmp > maxsum):      maxsum = maxtmp  return maxsumif __name__ == '__main__':  list_of_num = [1,3,-3,4,-6]  maxsum = maxSum(list_of_num)  print "maxsum is: ",maxsum

運行結果

maxsum is 5

總結

以上就是本文關于Python語言描述最大連續子序列和的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:

Python生成數字圖片代碼分享

python數字圖像處理之高級濾波代碼詳解

python+mongodb數據抓取詳細介紹

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通辽市| 通州区| 玉树县| 青阳县| 章丘市| 东兰县| 延吉市| 会宁县| 罗甸县| 镇原县| 丰镇市| 修武县| 竹北市| 桂阳县| 玉林市| 奉节县| 南昌市| 双桥区| 青冈县| 炉霍县| 瑞金市| 潼南县| 南皮县| 兴山县| 荆州市| 华安县| 延边| 栾川县| 柯坪县| 太和县| 阜阳市| 新竹市| 永年县| 保靖县| 仁化县| 孟津县| 大连市| 阿拉善盟| 延川县| 平泉县| 铁岭市|