題目:輸入乙個整型陣列,陣列裡有正數也有負數,陣列的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值
思路:使用窮舉法,把所有的可能列出來
舉例分析規律
如果累加時發現累加到了乙個負數,數字越來越小,則把之前的數存起來,他可能是乙個最大值。
如果累加的和變成了負數,那麼應該把這次的和去掉,換乙個頭
let arr =[1
,2,3
,-2,
5];const
findmax
= arr =>
let sum =0;
let lastsum =-1
;for
(var i =
0; i)else
if(sum > lastsum)
}return lastsum;
}
延伸:如果陣列為迴圈陣列,即尾部接著頭部
思路:迴圈我們可以構建新陣列,長度為原陣列兩倍,再次呼叫findmax函式
const
findmax2
= arr =>
劍指offer js實現剪繩子
題目 給你一根長度為n的繩子,請剪成m段n 1,m 1,使剩下的繩子乘積為最大值.例 8 2 3 3 18 思路 動態規劃,比如8,第一次切割可以分成8 1種切法,將最優解儲存起來。let n 8 function cut if res n return res n let max 0 for le...
劍指offer js編寫 樹
1 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 首先找到a中結點的值與b相等的結點,然後從這兩個相同的結點出發,判斷是否存在重合,若是返回true。否則,在樹a的左右子樹中尋找與b結點值相同的結點,以這些結點出發遞迴判斷是否是a的子樹。functio...
劍指offer連續子數的最大和
輸入乙個整型陣列,陣列裡有正數也有負數。陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為 o n 動態規劃思想 轉移方程 dp i 1 0 時,dp i dp i 1 array i dp i 1 0 時,dp i array i dp i 1 小於0,則認為其毫...