ppt做的好的網(wǎng)站有哪些樂事薯片軟文推廣
Hello!很高興又見到你了~~~
看看今天要學(xué)點(diǎn)什么來充實(shí)大腦吧——
目錄
1、移除元素
【思路+圖解】?
【總結(jié)】
2、刪除有序數(shù)組中的重復(fù)項(xiàng)
【思路+圖解】
【總結(jié)】
3、合并兩個(gè)有序數(shù)組
【思路+圖解】
【總結(jié)】
?至此結(jié)束,Show Time!
1、移除元素
【思路+圖解】?
上面的例子第一個(gè)數(shù)是等于val,當(dāng)不等于val 時(shí)可以自己試一下。新思路的時(shí)間復(fù)雜度為O(N),空間復(fù)雜度為O(N),結(jié)合思路我們嘗試上代碼:
int removeElement(int* nums, int numsSize, int val)
{int src=0;int dst=0;while(src<numsSize){if(nums[src]==val){src++;}else{nums[dst++]=nums[src++];//src++;//dst++;}}return dst;
}
【總結(jié)】
通過把 src 指向的不等于 val 的數(shù)賦給 dst 指向的位置,實(shí)現(xiàn)把不等于 val 的數(shù)放到前面,而且剛好 dst 的值就是數(shù)組中不等于 val 的數(shù)據(jù)的個(gè)數(shù),同時(shí)要注意循環(huán)的條件。
2、刪除有序數(shù)組中的重復(fù)項(xiàng)
【思路+圖解】
咱們直接上代碼:
在圖解第一個(gè)步驟中出現(xiàn)了重復(fù)賦值的情況。經(jīng)過 dst +1 后,dst 指向的數(shù)據(jù)等于2,src 指向的數(shù)據(jù)也等于2,再把 src 指向數(shù)據(jù)的值賦給dst,這里出現(xiàn)了重復(fù)賦值,我們優(yōu)化一下代碼:
int removeDuplicates(int* nums, int numsSize)
{int dst=0;int src=1;while(src<numsSize){if(nums[dst]!=nums[src]&&++dst!=src){nums[dst]=nums[src];}src++;}return dst+1;
}
【總結(jié)】
通過 src 遍歷數(shù)組,如果與 dst 指向的數(shù)據(jù)相等就跳過,不相等就先 dst++,再賦給 dst?指向的位置,限制條件 src<數(shù)組長度。這種方法思路清晰!
3、合并兩個(gè)有序數(shù)組
【思路+圖解】
思路理清,上代碼:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{int l1=m-1;int l2=n-1;int l3=m+n-1;while(l1>=0&&l2>=0){if(nums1[l1]>nums2[l2]){nums1[l3--]=nums1[l1--];}else{nums1[l3--]=nums2[l2--];}}//出了while循環(huán),要么l1<0,要么l2<0while(l2>=0){nums1[l3--]=nums2[l2--];}
}
【總結(jié)】
妙!多理解理解,記住這種方法,悟一悟,反正我太菜想不到這種方法......
? 至此結(jié)束,Show Time!
完——
童話鎮(zhèn)_小野來了_高音質(zhì)在線試聽_童話鎮(zhèn)歌詞|歌曲下載_酷狗音樂酷狗音樂為您提供由小野來了演唱的高清音質(zhì)無損童話鎮(zhèn)mp3在線聽,聽童話鎮(zhèn),只來酷狗音樂!https://t3.kugou.com/song.html?id=8Ceht83CPV2