每天一道演算法題(2019 3 5)

2021-09-12 00:08:52 字數 1064 閱讀 2789

q:給定乙個序列,求最大子串行

思路1: 暴力求解法:把所有可能的子串行列出來作比較,利用雙層迴圈,複雜度為o(n^2)。

def maxsubarray(list):

res = list[0]

for i in range(length(list)):#the start index of subarray

maxtmp = 0

for j in range(i, length(list)):# the end index on subarray

maxtmp += list[j]

if maxtmp > max:

res = maxtmp

return res

思路2: 利用動態規劃的方法,dp(i)表示以第i個數結尾的和最大子串行。動態轉移關係為:

dp(i)=max(dp(i-1)+list[i], list[i])

def maxsubarray(list):

if length(list) == 1:# if length egale 1, translation does not existe

return list[0]

dp = res = list[0]# res by default

for i in range(1,length(list)):

dp = max(dp+list[i], list[i]) # translation

res = max(res, dp)

return res

思路3: 遍歷整個序列,累加求和,當和小於零的時候,更新和為零;同時儲存最大值。

def maxsubarray(list):

res = temp = 0

for i in range(len(list)):

temp += list[i]

res = max(temp, res)

if temp <= 0:

temp = 0

return res

每天一道演算法題

no.1 棧是特殊的線性表,它。a.對 b.錯答案 錯,它的插入和刪除都是在同一端進行的。no.2 n個葉子節點的滿二叉樹 除了葉子節點,每個節點都有兩個孩子 總共有多少個節點?a.2n 1 b.2n c.n 1 d.n答案 a 滿二叉樹我們講過了,度為0的節點比度為2的加點多乙個。滿二叉樹是特殊的...

每天一道演算法題

1.給定乙個只包括 的字串,判斷字串是否匹配。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。思路 正確思路 不需要考慮輸入內容是否合法,這只是做題,不是工程 定義乙個字典,後括號為鍵,前半部分為值 定義乙個元素儲存棧頂,注意這個設定,取棧...

每天一道演算法題

1 js計算某個字串出現的次數 j ascript計算乙個字串最多重複的字元及出現次數.var str zhaochucichuzuiduodezifu var o for var i 0,length str.length i length i else console.log o 輸出的是完整的...