簡(jiǎn)述營(yíng)銷導(dǎo)向的企業(yè)網(wǎng)站建設(shè)的步驟seo的英文全稱是什么
文章目錄
- 🐨1. 題目
- 🏹2. 思路
- 🪃3. 代碼實(shí)現(xiàn)
🐨1. 題目
給你一個(gè)升序排列的數(shù)組nums,請(qǐng)你原地刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素只出現(xiàn)一次,返回刪除后數(shù)組的新長(zhǎng)度。元素的相對(duì)順序應(yīng)該保持一致。
由于在某些語(yǔ)言中不能改變數(shù)組的長(zhǎng)度,所以必須將結(jié)果放在數(shù)組nums的第一部分。更規(guī)范地說(shuō),如果在刪除重復(fù)項(xiàng)之后有k個(gè)元素,那nums的前k個(gè)元素應(yīng)該保存最終結(jié)果。
將最終結(jié)果插入 nums 的前k個(gè)位置后返回k。
不要使用額外的空間,你必須在原地修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。
示例1:
輸入: nums = [1,1,2]
輸出: 2, nums = [1,2,_ ]
解釋: 函數(shù)應(yīng)該返回新的長(zhǎng)度2,并且原數(shù)組 nums 的前兩個(gè)元素被修改為 1, 2 。不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
示例 2:
輸入: nums = [0,0,1,1,1,2,2,3,3,4]
輸出: 5, nums = [0,1,2,3,4]
解釋: 函數(shù)應(yīng)該返回新的長(zhǎng)度 5 , 并且原數(shù)組 nums 的前五個(gè)元素被修改為 0, 1, 2, 3, 4 。不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
提示:
- 1 <= nums.length <= 3 * 104
- -104 <= nums[i] <= 104
- nums 已按 升序 排列
🏹2. 思路
這里題目對(duì)空間復(fù)雜度做了要求,必須為 O(1) ,那么我們就不能開(kāi)辟新的數(shù)組,只能在原數(shù)組上動(dòng)手。題目還給出了一個(gè)條件——數(shù)組是有序的,這就意味著如果重復(fù)的元素一定是相鄰的。
這樣我們就可以考慮用雙指針,因?yàn)橐容^指向的內(nèi)容是否相同,所以這里不能指向同一個(gè)位置,即我們?cè)O(shè)置一個(gè)前dst,一個(gè)后src。
🪃3. 代碼實(shí)現(xiàn)
注意:
這個(gè)函數(shù)的返回值是去重后的數(shù)組長(zhǎng)度。在函數(shù)執(zhí)行的過(guò)程中,變量dst表示當(dāng)前去重后的數(shù)組的最后一個(gè)元素的索引,因此實(shí)際上需要返回的是dst + 1。
int removeDuplicates(int* nums, int numsSize){int src = 1;int dst = 0;while(src<numsSize){if(nums[dst] != nums[src]){nums[++dst] = nums[src++];}else{src++;}}return dst+1;
}