LeetCode刷題之旅(簡單 13) 最大子序和

2021-09-24 05:41:24 字數 1925 閱讀 2897

2023年6月8日

目錄

題目:解決方法1:暴力累計遍曆法

思路:效能結果:

解決方法2:動態規劃

思路:效能結果:

解決方法3:分治法(類似二分法)

思路:效能結果:

解決方法4:其他網友的解法:利用中間陣列過渡比較

思路:效能結果:

小結:

* 主要是利用逐步求解,以連續陣列結束位置為每一步的解,

* sum其實就是記錄了上一步驟的解,在這一步驟進行對比,如果上一步驟的解<0則捨棄。

* 最終得到這一步驟解,與之前步驟解的最大值res進行比較,儲存當前的最優解。

* */

public static int maxsubarrayv2(int nums)

//-------------------分治法----------------------

/*** 通過遞迴分治不斷的縮小規模,問題結果就有三種,左邊的解,右邊的解,以及中間的解(有位置要求,從中介mid向兩邊延伸尋求最優解),

* 得到三個解通過比較大小,等到最優解。

* */

private static int maxsubarraypart(int nums,int left,int right)

int mid=(left+right)/2;

return math.max(

maxsubarraypart(nums,left,mid),

math.max(

maxsubarraypart(nums,mid+1,right),

maxsubarrayall(nums,left,mid,right)));

}//左右兩邊合起來求解

只能說,好的**,效能優化的非常好,思路也是新奇的很;多練習,多思考,從現在出發吧。

leetcode刷題之旅(day1)

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

LeetCode刷題之旅(簡單 15) 加一

2019年6月11日 目錄 題目 錯誤思路 資料型別轉換,運算 解決方法1 遞迴檢測進製 思路 效能結果 解決方法2 思路簡潔的解法 思路 效能結果 小結 public static int plusone int digits 2.string轉int並加1 long num long.value...

leetcode刷題之旅簡單篇(2)整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 class solution return rev 整數反轉的過程可以模擬於堆疊後進先出的操作,在不使用堆疊的情況下...