简谈最大子数组和
来源:互联网 发布:淘宝做任务送礼物微信 编辑:程序博客网 时间:2024/05/17 22:45
1 最大子数组和问题
最大子数组肯定不会有一个负的子数组前缀
这里首先将前缀置为0
def fun(z): if len(z) == 0: return tem_sum = 0 final_sum = -0x3fffffff for i in range(len(z)): if tem_sum + z[i] > final_sum: final_sum = tem_sum + z[i] if tem_sum + z[i] > 0: tem_sum = tem_sum + z[i] else: tem_sum = 0 return final_sum
a = [1,2,3]
fun([-1,-2,-3])
-1
fun([0,1])
1
2返回最大字数组和以及这个子数组
1 如果之前的和加上当前的元素大于最大和,则更新final_sum,final_up,final_down
2 如果tem_sum + 当前元素 > 0,那么tem_sum更新为tem_sum + 当前元素,否则tem_sum = 0,down = 当前位置的下一个
def fun(z): if len(z) == 0: return tem_sum = 0 final_sum = -0x3fffffff up = 0 down = 0 final_up = 0 final_down = 0 for i in range(len(z)): if tem_sum + z[i] > final_sum: final_sum = tem_sum + z[i] final_up = i final_down = down print final_sum,z[final_down:final_up+1] if tem_sum + z[i] > 0: tem_sum = tem_sum + z[i] elif tem_sum + z[i] < 0: tem_sum = 0 down = i + 1 elif tem_sum + z[i] == 0: tem_sum = 0 down = i + 1 return final_sum,z[final_down:final_up+1]
fun([1,2,3])
1 [1]3 [1, 2]6 [1, 2, 3](6, [1, 2, 3])
fun([-1,-2,-3])
-1 [-1](-1, [-1])
fun([-1,0,1,0,2,-3])
-1 [-1]0 [0]1 [1]3 [1, 0, 2](3, [1, 0, 2])
fun([-1,0,0,1,2,3,-3])
-1 [-1]0 [0]1 [1]3 [1, 2]6 [1, 2, 3](6, [1, 2, 3])
fun([1,-1,2,3])
1 [1]2 [2]5 [2, 3](5, [2, 3])
fun([-3,-2,-1])
-3 [-3]-2 [-2]-1 [-1](-1, [-1])
b = 0a = bb = 1print a
0
[1,2,3][0:2]
[1, 2]
[1,2,3][0:3]
[1, 2, 3]
print -0x3fffffff
-1073741823
0 0
- 简谈最大子数组和
- 子数组和最大
- 最大子数组和
- 最大子数组和
- 子数组最大和
- 最大子数组和
- 子数组最大和
- 子数组最大和
- 最大子数组和
- 最大子数组和
- 子数组最大和
- 子数组最大和
- 最大子数组和
- 最大子数组和
- 最大子数组和
- 最大子数组和
- 最大子数组和
- 最大子数组和
- 观看模仿游戏有感
- java Hashtable用得没hasmMap多呢
- S1金牌考试错误题集
- 用PHPExcel读取excel
- 算法竞赛入门经典 习题2-1 位数(digit)
- 简谈最大子数组和
- hibernate查询/更新多次操作无响应
- gradlew 工程编译
- 浅谈mock和stub
- Android7.0 PowerManagerService亮灭屏分析(一)
- S1 测试错题
- ubuntu14.04用户名修改后密码错误问题
- 关于RPC协议的通俗理解
- mysql 1292 - Truncated incorrect INTEGER