給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
示例 1:
給定數(shù)組 nums = [1,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], 函數(shù)應(yīng)該返回新的長(zhǎng)度 5, 并且原數(shù)組 nums 的前五個(gè)元素被修改為 0, 1, 2, 3, 4。 你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
說(shuō)明:
為什么返回?cái)?shù)值是整數(shù),但輸出的答案是數(shù)組呢?
請(qǐng)注意,輸入數(shù)組是以“引用”方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對(duì)于調(diào)用者是可見(jiàn)的。
你可以想象內(nèi)部操作如下:
// nums 是以“引用”方式傳遞的。也就是說(shuō),不對(duì)實(shí)參做任何拷貝 int len = removeDuplicates(nums); // 在函數(shù)里修改輸入數(shù)組對(duì)于調(diào)用者是可見(jiàn)的。 // 根據(jù)你的函數(shù)返回的長(zhǎng)度, 它會(huì)打印出數(shù)組中該長(zhǎng)度范圍內(nèi)的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); }解題思路:
? 定義兩個(gè)指針,指針 i 索引遍歷數(shù)組,指針 j 索引值與 i 索引值比較,如果相等則 i 繼續(xù)遍歷,如果不等則將索引 i 的值賦值得到索引 j+1 的值。
Java:class Solution { public int removeDuplicates(int[] nums) { int numsLen = nums.length; if (numsLen < 1) return numsLen;//如果數(shù)組只有一個(gè)值或空數(shù)組,直接返回該數(shù)組的長(zhǎng)度 int j = 0; for (int i = 1; i < numsLen; i++) {//指針 i 從從索引 1 開(kāi)始遍歷數(shù)組 if (nums[i] != nums[j]) {//與索引 j 的值比較 nums[++j] = nums[i];//如果不相等 索引j+1 ,并得到索引i的值 } } return j + 1;//返回到指針 j,數(shù)組的長(zhǎng)度 } }
? python這道題并沒(méi)有很特殊的解法。
Python3:class Solution: def removeDuplicates(self, nums: List[int]) -> int: numsLen = len(nums) if(numsLen < 1): return numsLen j = 0 for i in range(1, numsLen): if nums[j] != nums[i]: j += 1 nums[j] = nums[i] return j+1
公眾號(hào):愛(ài)寫(xiě)bug(ID:iCodeBugs)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75368.html
給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。 不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and re...
摘要:給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用額外空間的條件下完成。聲明兩個(gè)指針,為快指針,為慢指針如果遇到相同的數(shù),那么就跳過(guò),。 給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組...
摘要:給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素最多出現(xiàn)兩次,返回移除后數(shù)組的新長(zhǎng)度。正確思路對(duì)于每一個(gè)元素,都進(jìn)行移動(dòng)。或者比較不到最后一個(gè)對(duì)象。 給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素最多出現(xiàn)兩次,返回移除后數(shù)組的新長(zhǎng)度。不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。 錯(cuò)誤思路:由26題跳過(guò)一個(gè)的思...
摘要:題目比較簡(jiǎn)單,就是找出數(shù)組不重復(fù)的數(shù)字,返回不重復(fù)的數(shù)字個(gè)數(shù)。無(wú)需刪除重復(fù)數(shù)字,只需要保證數(shù)組的前位為不重復(fù)的個(gè)數(shù)字即可代碼如下 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not all...
此專(zhuān)欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號(hào)先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...
閱讀 3061·2021-11-23 09:51
閱讀 1040·2021-09-02 15:21
閱讀 3005·2019-08-30 13:56
閱讀 1829·2019-08-29 14:12
閱讀 708·2019-08-29 13:53
閱讀 1664·2019-08-29 11:32
閱讀 1325·2019-08-29 11:25
閱讀 1493·2019-08-28 17:51