今天寫了個簡單演算法,挑選出滿足條件的子陣列:
1.子陣列內的值相加總和最大
(用乙個start來定位子陣列的起點,輸出從起點到迴圈的點的子陣列資訊)
def sub_array(arr):
start, total_num, result_arr = 0, arr[0],
result_num = arr[0]
for i in range(1, len(arr)):
if arr[i] > arr[i] + total_num:
start = i
total_num = arr[i]
else:
total_num = arr[i] + total_num
if total_num > result_num:
result_num = total_num
result_arr = arr[start:i + 1]
print(result_num)
print(result_arr)
sub_array([1, 5, -10, 2, 1, -3, 2, 6, -3, 1])
------結果------
8[2, 1, -3, 2, 6]
這個思路也可以簡單拓展下變成找出最大不重複字串
def sub_str(s):
dic = {}
start, max_len, result_str = 0, 0, ""
for i, x in enumerate(s):
if x in dic:
start = dic[x] + 1
dic[x] = i
else:
dic[x] = i
if i - start + 1 > max_len:
max_len = i - start + 1
result_str = s[start:i + 1]
return result_str
子陣列之和的最大值
給定乙個陣列,查詢這個陣列的子陣列的最大和 比如 2,5,3,6,4,8,6 輸出最大和8 分析 假設已經找到乙個子陣列的最大和,這個子陣列是從陣列索引i到索引j。可以用如下式子描述,cur max a i j 對於下乙個數,也就是索引為j 1,這個最大和是否 將a j 1 加入cur max,需要...
子陣列之和的最大值
感謝firo july 2010.06.05。algorithm 1 時間效率為o n n n intmaxsubsequencesum1 const inta,intn return maxsum algorithm 2 時間效率為o n n intmaxsubsequencesum2 const...
求陣列的子陣列之和最大值
題目 乙個有n個整數元素的一維陣列a 0.n 1 這個陣列當然有很多子陣列,那麼子陣列之和最大值是多少?解答 求子陣列之和最大,這裡是連續的子陣列,如果乙個數為負數,陣列之和會減少,記住最大值,只要陣列之和沒有小於0就可以繼續累加,比如,3到 1子陣列之和減小了,但是沒有小於0,可以繼續累加下乙個數...