挑選最大值子陣列

2021-10-18 07:26:59 字數 1029 閱讀 5101

今天寫了個簡單演算法,挑選出滿足條件的子陣列:

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,可以繼續累加下乙個數...