日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

next数组_【阿里面试热身题】数组去重(动画展示)

發(fā)布時間:2024/1/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 next数组_【阿里面试热身题】数组去重(动画展示) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天這道雙指針題目特征非常明顯,就是數(shù)據(jù)挪移。這類問題,通常需要一個指針掃描全局,確定哪個元素要被挪移,另一個指針用來維護(hù)能夠接納元素的地址。

1 舉個栗子

給定一個升序排列的數(shù)組,請將其中重復(fù)的字符移除。你不能使用額外的空間。在處理完畢后,返回去重后的數(shù)組長度

  • 例子1

輸入:[2, 3, 3, 3, 6, 9, 9]

輸出:4

解釋:去重后數(shù)組的元素是[2, 3, 6, 9]

  • 例子2 輸入:[2, 2, 2, 11]

輸出:2

解釋:去重后數(shù)組的元素是[2, 11]

2 問題分析

這個問題中,數(shù)組是有序的。我們可以用一個指針順序掃描整個數(shù)組,找出所有的非重復(fù)數(shù)字。判斷的標(biāo)準(zhǔn)非常簡單,當(dāng)該元素與上一個非重復(fù)元素的值不同時,該元素就是一個新的數(shù)字。

那,將這個元素放在哪里呢?因為該元素右邊還需要進(jìn)行掃描,所以,我們只能將這些非重復(fù)的元素放到數(shù)組的左端,這樣,我們就需要另一個指針來記錄可用來存放元素的位置。并且每放一個元素,就需要移動一下該指針。

3 動畫展示

下面的視頻可以幫助理解。

原地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/shi-ping-dong-hua-jie-xi-bao-ni-dong-by-novice2mas/

4 代碼實現(xiàn)

def remove_duplicates(arr):
# 用來記錄放置非重復(fù)元素的位置
# 0位置上認(rèn)為是已經(jīng)放好的
next_non_duplicate = 1

i = 1
while(i < len(arr)):
if arr[next_non_duplicate - 1] != arr[i]:
arr[next_non_duplicate] = arr[i]
next_non_duplicate += 1
i += 1

return next_non_duplicate

總結(jié)

以上是生活随笔為你收集整理的next数组_【阿里面试热身题】数组去重(动画展示)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。