一、題目描述
給你兩個有序整數(shù)數(shù)組nums1和nums2,請你將nums2合并到nums1中,使nums1成為一個有序數(shù)組。
初始化nums1和nums2的元素數(shù)量分別為 m 和 n 。
你可以假設(shè)nums1的空間大小等于 m + n,這樣它就有足夠的空間保存來自nums2的元素。
二、題目解析
設(shè)置兩個索引i和j分別指向 nums1 和 nums2 的有效元素的尾部,從它們的尾部開始向前遍歷。
同時設(shè)置索引cur指向nums1的最末尾。

在每次遍歷過程中,比較i和j指向的元素值大小,把大的元素填充到cur的位置,填充完畢說明那個元素已經(jīng)放置在它應(yīng)該放置的位置,不需要在管它了,把cur向前移動,同時把i或者j向前移動。
繼續(xù)比較i和j指向的元素值大小,把大的元素填充到cur的位置。
三、參考代碼
classSolution{
publicvoidmerge(int[]nums1,intm,int[]nums2,intn){
//索引從有序數(shù)組nums1有效元素的末端開始
//數(shù)組的下標索引從零開始計數(shù)
//索引012
//數(shù)組[1,2,3]
inti=m-1;
//索引從有序數(shù)組nums2的末端開始
intj=n-1;
//從有序數(shù)組nums1最末端的位置開始保存元素
intcur=nums1.length-1;
//通過循環(huán)把num2的元素都移動到num1中
while(j>=0){
//比較num1和num2中當前的元素大小
//如果num1中的索引位置為i的元素大于num2中索引位置為j的元素
//為了防止越界i必須是大于等于0
if(i>=0&&nums1[i]>nums2[j]){
//把num1中的索引位置為i的元素復(fù)制到索引為cur的位置
//此時cur的元素已經(jīng)確定下來
nums1[cur]=nums1[i];
//接下來去確定cur前面一個元素應(yīng)該放什么數(shù)字
cur--;
//此時,索引i需要向前移動
i--;
//否則,如果num1中的索引位置為i的元素小于或者等于num2中索引位置為j的元素
}else{
//把num2中的索引位置為j的元素復(fù)制到索引為cur的位置
nums1[cur]=nums2[j];
//接下來去確定cur前面一個元素應(yīng)該放什么數(shù)字
cur--;
//此時,索引j需要向前移動
j--;
}
}
}
}
審核編輯 :李倩
-
元素
+關(guān)注
關(guān)注
0文章
47瀏覽量
8762 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
27351
原文標題:LeetCode 26:刪除有序數(shù)組中的重復(fù)項
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
C語言插入排序算法和代碼
線性搜索與二分搜索介紹
數(shù)組的初體驗
通過優(yōu)化代碼來提高MCU運行效率
精密平臺中重復(fù)精度的影響因素有哪些
重復(fù)接地4Ω還是10Ω
產(chǎn)品下架與刪除API接口
高壓放大器在鎖相環(huán)穩(wěn)定重復(fù)頻率研究中的應(yīng)用
redefinition of \'gImage_pic2\'
TDengine 發(fā)布時序數(shù)據(jù)分析 AI 智能體 TDgpt,核心代碼開源
有序充電策略控制系統(tǒng)在新能源充電站中的應(yīng)用
淺談有序充電測量在充電站運維中的應(yīng)用
LeetCode 26:刪除有序數(shù)組中的重復(fù)項
評論