日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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

1 舉個栗子

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

  • 例子1

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

輸出:4

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

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

輸出:2

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

2 問題分析

這個問題中,數組是有序的。我們可以用一個指針順序掃描整個數組,找出所有的非重復數字。判斷的標準非常簡單,當該元素與上一個非重復元素的值不同時,該元素就是一個新的數字。

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

3 動畫展示

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

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

4 代碼實現

def remove_duplicates(arr):
# 用來記錄放置非重復元素的位置
# 0位置上認為是已經放好的
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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。