LeetCode1035. 不相交的線
題目說明
我們在兩條獨立的水平線上按給定的順序寫下 A 和 B 中的整數。
現在,我們可以繪製一些連線兩個數字 A[i] 和 B[j] 的直線,只要 A[i] == B[j],且我們繪製的直線不與任何其他連線(非水平線)相交。
以這種方法繪製線條,並返回我們可以繪製的最大連線數。
示例 1
輸入:A = [1,4,2], B = [1,2,4]
輸出:2
解釋:
我們可以畫出兩條不交叉的線,如上圖所示。
我們無法畫出第三條不相交的直線,因為從 A[1]=4 到 B[2]=4 的直線將與從 A[2]=2 到 B[1]=2 的直線相交。
示例 2:
輸入:A = [2,5,1,2,5], B = [10,5,2,1,5,2]
輸出:3
示例 3:
輸入:A = [1,3,7,1,7,5], B = [1,9,2,5,1]
輸出:2
題目分析
這裡主要是利用了動態規劃裡面的最大公共子序列,然後得出遞迴的公式,按照公式進行書寫程式碼就可以。
下圖是最大公共子序列的狀態轉移方程。
需要注意的是定義的dp是從1開始,而訪問的元素和是從零開始,因此需要將改變相應的元素下標。
參考程式碼
class Solution {
public:
int maxUncrossedLines(vector<int>& A, vector<int>& B) {
int m = A.size(), n = B.size();
//建立一個二維陣列,注意定義方法
vector< vector<int> > dp( m+1,vector<int>(n+1));
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if( A[i] == B[j])
dp[i+1][j+1] = dp[i][j] +1;
else
dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);
}
}
return dp[m][n];
}
};
相關文章
- 空間或平面判斷兩線段相交(求交點)
- pandas求兩個表格不相交的集合
- 用css畫出兩個大圓相交,可以在各自圓及相交部分輸入文字CSS
- CSS實現兩個球相交的粘粘效果CSS
- 兩圓相交求面積c++C++
- 每日leetcode——160. 相交連結串列LeetCode
- 保持ssh的連線不斷開
- tp線上手冊的原始碼賣不原始碼
- DP線接顯示器點不亮的解決方法(接DP線點不亮,接HDMI線能點亮)
- 判斷元素是否在視口和元素相交
- 【LeetCode】1496. 判斷路徑是否相交(Java)LeetCodeJava
- 尋找連結串列相交結點問題
- 線性時不變系統的卷積卷積
- day57 動態規劃part14 程式碼隨想錄演算法訓練營 1035. 不相交的線動態規劃演算法
- MQTT伺服器連線不上的問題MQQT伺服器
- 連線zk 報錯連線不上hbase jdbcJDBC
- Android Studio adb連線不上Android
- 【leetcode 簡單】第三十七題 相交連結串列LeetCode
- win10系統連線不上無線網Win10
- 線上故障的排查清單,運維拿走不謝!運維
- 解決laravel 連線不上docker 安裝的redisLaravelDockerRedis
- xshell連線不上linux問題Linux
- VScode遠端連線伺服器連線不上,各種神奇的報錯VSCode伺服器
- [計算幾何]圓與三角形是否相交
- word空格處不顯示下劃線
- 少年,想線上熱更新程式碼不?
- CAD虛線不顯示怎麼辦
- cmd 工具 ssh 保持連線不斷開
- win10連線不上網路印表機怎麼辦 為什麼連線不上印表機Win10
- win10藍芽耳機連線不上怎麼辦_win10藍芽耳機連線不上的解決方法Win10藍芽
- 路由器無線網路不穩定怎麼辦?路由器無線網路速度不穩定的原因和解決方法路由器
- 無線網路卡狀態不對問題:已連線 顯示 未連線
- 華為雲windows遠端介面連線不上的可能原因Windows
- centos7 遠端連線mongodb時,27017埠連線不上的解決辦法CentOSMongoDB
- 人工智慧時代,企業的未來離不開雲專線——微雲專線人工智慧
- 從UDP的”連線性”說起–告知你不為人知的UDPUDP
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 語音社交原始碼開發,兩個執行緒按照指定方式有序相交的實現原始碼執行緒