LintCode 139. Subarray Sum Closest
程序员文章站
2022-07-15 17:46:19
...
题目
思路
这个题做的好累o(╥﹏╥)o
定义
则
1.得到PrefixSum
2.把PrefixSum从小到大排序
3.找到的最小值
代码
class Solution:
"""
@param: nums: A list of integers
@return: A list of integers includes the index of the first number and the index of the last number
"""
def subarraySumClosest(self, nums):
# write your code here
if len(nums) == 1: return [0, 0]
res_list = []
res_list.append(0)
res_list.append(2)
sub_sum = []
sub_sum.append([0, 0])
sum = 0
for i, v in enumerate(nums):
sub_sum.append([sum + v, i + 1])
sum += v
sub_sum.sort(key = lambda x: x[0])
minNum = 99999999
sum = 0
for i, v in enumerate(sub_sum):
if i == 0: continue
if minNum > (v[0] - sub_sum[i - 1][0]):
minNum = v[0] - sub_sum[i - 1][0]
res_list[0] = min(v[1] - 1, sub_sum[i - 1][1] - 1) + 1
res_list[1] = max(v[1] - 1, sub_sum[i - 1][1] - 1)
return res_list
上一篇: spark 学习笔记3
下一篇: Spark学习笔记