------持續(xù)更新藍橋杯入門系列算法實例--------
成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設與網(wǎng)站營銷,提供網(wǎng)站設計制作、成都網(wǎng)站制作、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、重慶小程序開發(fā)公司、公眾號商城、等建站開發(fā),成都創(chuàng)新互聯(lián)網(wǎng)站建設策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。如果你也喜歡Java和算法,歡迎訂閱專欄共同學習交流!
你的點贊、關注、評論、是我創(chuàng)作的動力!
-------希望我的文章對你有所幫助--------
一、題目描述前言:今天又回顧了一部分之前寫過的算法題,加深記憶和印象,不斷思考總結才能夠掌握算法題中的各種技巧和細節(jié),失之毫厘謬以千里。今天的這道題目也挺有意思的,剛開始以為自己能夠做出來,但總差點思路,研究一番后才醒悟。與你共享我的思考成果!
給兩個整數(shù)數(shù)組?nums1
和?nums2
,返回兩個數(shù)組中 公共的 、長度最長的子數(shù)組的長度?。
示例 1:
輸入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7] 輸出:3 解釋:長度最長的公共子數(shù)組是 [3,2,1] 。
示例 2:
輸入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0] 輸出:5
二、代碼實現(xiàn)解題思路: 1、這題有些許類似前面題目中字符串最長公共前綴,但是總體更難一些,以為所求的子數(shù)組與子序列不同,在于必須是有序的。
2、例如數(shù)組 Array[8,4,7,6,4],其子數(shù)組必須是連續(xù)的,{8,4,6},{4,6}就不行,因為數(shù)組元素位置不可改變。
3、采用dp(動態(tài)規(guī)劃)來完成,新建一個dp二維數(shù)組,且其大小為(A+1)*(B+1)A、B分別是兩個數(shù)組的長度。
4、設置兩個循環(huán),對于兩個數(shù)組中的元素遍歷其比對,如果有相同位置的元素相同即dp[][]+1,最好手動去畫一畫,就能理解。(未賦值的元素默認是0)
5、最后,使用Math.max(),如果找到更長的數(shù)組長度,更新數(shù)據(jù),最后return即可。
public int findLength(int[] nums1, int[] nums2) {
int Result=0;
int dp[][]=new int [nums1.length+1][nums2.length+1];
for(int i=1;i
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧