求随机数列字串最大和问题Python解法
时间:2010-10-23
来源:互联网
最近有道面试题很流行:
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a+a[i+1]+…+a[j]的子段和的最大值
贴个Python解法:
复制代码
getMax是最简单直观的两层循环穷举
getMax2是动态规划算法:
再来个测试脚本:
复制代码
初学Python,code style就那样儿,估计说的还不是地道的Python方言
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a+a[i+1]+…+a[j]的子段和的最大值
贴个Python解法:
- #!/usr/bin/python
- import sys
- def getMax(array):
- maxV=None;
- maxL=[]
- start = 0
- end = 0
- for n in range(len(array)):
- l=[]
- v=0
- for i in array[n:]:
- l=l[:]
- l.append(i)
- v=v+i
- if(v>maxV or maxV==None):
- maxV=v
- maxL=l
- start = n
- end = n+array[n:].index(i)
-
- print("Start: %s, End: %s" % (start, end))
- print(maxV)
-
- def getMax2(array):
- tempSum = None
- Sum = None
- start = 0
- end = 0
- tempStart = 0
- for n in range(len(array)):
- if tempSum>0 or tempSum>array[n]:
- tempSum = tempSum+array[n]
- else:
- tempSum = array[n]
- tempStart = n
-
- if tempSum>Sum:
- start = tempStart
- Sum=tempSum
- end = n
-
- #print(array[start:end+1])
- print("Start: %s, End: %s" % (start, end))
- print(Sum)
-
- if __name__=="__main__":
- getMax([int(x) for x in sys.argv[1].split(",")])
getMax2是动态规划算法:
再来个测试脚本:
- #!/usr/bin/python
-
- import random
- import sys
- import time
- from getMax import *
-
- def getRandomList(num):
- if not num:
- length = random.randint(1,1000)
- else:
- length = num
-
- l=[]
- for i in range(length):
- l.append(random.randint(-1000000,1000000))
-
- return l
-
-
- if __name__=="__main__":
- for i in range(10):
- l = getRandomList(None)
- print("")
- print("********")
- print("Length of test data: %s" % len(l))
- print("Method: getMax")
- start=time.time()
- getMax(l)
- print("Used time: %s" % (time.time()-start))
- print("")
- print("Method: getMax2")
- start=time.time()
- getMax2(l)
- print("Used time: %s" % (time.time()-start))
- ~

作者: donotblock 发布时间: 2010-10-23

作者: a515200a 发布时间: 2010-10-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28