在兩條獨立的水平線上按給定的順序寫下 nums1 和 nums2 中的整數。
現在,可以繪製一些連線兩個數字 nums1[i] 和 nums2[j] 的直線,這些直線需要同時滿足滿足:
nums1[i] == nums2[j]
且繪製的直線不與任何其他連線(非水平線)相交。
請注意,連線即使在端點也不能相交:每個數字只能屬於一條連線。
以這種方法繪製線條,並返回可以繪製的最大連線數。
/** * @param nums1
* @param nums2
* @return */
var maxuncrossedlines = function
(nums1, nums2)
else}}
return
dp[m][n];
};let nums1 = [1,4,2], nums2 = [1,2,4]
console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));
nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));
nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));
示例 1:
輸入:nums1 = [1,4,2], nums2 = [1,2,4]
輸出:2
解釋:可以畫出兩條不交叉的線,如上圖所示。
但無法畫出第三條不相交的直線,因為從 nums1[1]=4 到 nums2[2]=4 的直線將與從 nums1[2]=2 到 nums2[1]=2 的直線相交。
示例 2:
輸入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
輸出:3
示例 3:
輸入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
輸出:2
1 <= nums1.length <= 500
1 <= nums2.length <= 500
1 <= nums1[i], nums2[i] <= 2000
二維陣列 動態規劃
簡要描述 給定乙個m行n列的矩陣 m n個格仔 每個格仔中放著一定數量的平安果。你從左上角的各自開始,只能向下或者向右走,目的地是右下角的格仔。每走過乙個格仔,就把格仔上的平安果都收集起來。求你最多能收集到多少平安果。注意 當經過乙個格仔時,需要一次性把格仔裡的平安果都拿走。1 n,m 50 每個格...
演算法篇 二維動態規劃問題
題目 給定乙個nxm的矩陣a和乙個整數k,小hi希望你能求出其中最大 元素數目最多 的子矩陣,並且該子矩陣中所有元素的和不超過k。input 第一行包含三個整數n m和k。以下n行每行包含m個整數,表示a。對於40 的資料,1 n,m 10 對於100 的資料,1 n,m 250 1 k 21474...
二維費用的揹包問題(動態規劃)
二維費用的揹包問題 有 n n 件物品和乙個容量是 v v 的揹包,揹包能承受的最大重量是 m m 每件物品只能用一次。體積是 v i vi 重量是 m i mi 價值是 w i wi 求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,總重量不超過揹包可承受的最大重量,且價值總和最大。輸出最大價...