Lc面試題1617連續數列

package com.leetcode.leetcode.licm; /** * @description: * @author: licm * @create: 2021-07-27 09:51 **/ public class Lc面試題1617連續數列 { /** * dp * <p> * 1. 確定dp含義 當前下標對應的最大值 * 2. 遞推公式 Math.max(nums[i],dp[i-1]+nums[i]) * 3. 初始化 * 4。確定遍歷順序 * 4. 推導結果 * * @param nums * @return */ public static int maxSubArray(int[] nums) { if (nums.length == 0) { return 0; } int[] dp = new int[nums.length]; dp[0] = nums[0]; for (int i = 1; i < nums.length; i++) { dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); } int res = Integer.MIN_VALUE; for (int i = 0; i < dp.length; i++) { res = res < dp[i] ? dp[i] : res; } return res; } public static void main(String[] args) { int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; System.out.println(maxSubArray(nums)); } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章