日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

lintcode 最大子数组III

發(fā)布時(shí)間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lintcode 最大子数组III 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述

  給定一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù)?k,找出?k?個(gè)不重疊子數(shù)組使得它們的和最大。每個(gè)子數(shù)組的數(shù)字在數(shù)組中的位置應(yīng)該是連續(xù)的。

  返回最大的和。

注意事項(xiàng)

  子數(shù)組最少包含一個(gè)數(shù)

樣例

  給出數(shù)組?[-1,4,-2,3,-2,3]?以及 k =?2,返回?8

思路

  dp[i][j] = max(dp[x][j-1]+maxs[x+1][i])

  dp[i][j] 表示前 i 個(gè)數(shù)中 j 個(gè)子數(shù)組的最大值,

  maxs[i][j] 表示 第i個(gè)數(shù)到第j個(gè)數(shù)中最大子數(shù)組的和。

代碼

public class Solution {/*** @param nums: A list of integers* @param k: An integer denote to find k non-overlapping subarrays* @return: An integer denote the sum of max k non-overlapping subarrays*/public int maxSubArray(int[] nums, int k) {// write your code hereint[][] maxs = new int[nums.length][nums.length];int[][] dp = new int[nums.length][k+1];for(int i=0; i<nums.length; ++i) {for(int j=i; j<nums.length; ++j) {maxs[i][j] = maxSum(nums, i, j);}}for(int i=0; i<dp.length; ++i) {for(int j=0; j<dp[i].length; ++j) {dp[i][j] = Integer.MIN_VALUE;}}for(int i=0; i<dp.length; ++i) {dp[i][1] = maxs[0][i];}for(int i=1; i<nums.length; ++i) {for(int j=2; j<=k; ++j) {for(int x=j-2; x<i; ++x) {dp[i][j] = Math.max(dp[i][j], dp[x][j-1] + maxs[x+1][i]);}}}return dp[nums.length-1][k];}private int maxSum(int[] nums, int i, int j) {int sum = 0, maxs = Integer.MIN_VALUE;for(int x = i; x <= j; ++x) {sum += nums[x];if (maxs < sum) {maxs = sum;}if (sum < 0) {sum = 0;}}return maxs;}}

  

轉(zhuǎn)載于:https://www.cnblogs.com/hujunzheng/p/7376237.html

總結(jié)

以上是生活随笔為你收集整理的lintcode 最大子数组III的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。