每日一题——LeetCode26(删除有序数组中的重复项)

题意

给你一个 升序排列 的数组 nums ,请你* 原地* 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致

解题思路

首先要知道len()是数组的个数,而nums[1]表示从第一位起(第一位初始为0)
思路来源:https://www.bilibili.com/video/BV1d3411y75s/

  1. 首先想到主要情况,因为是自增数列
  2. 想到用两个小箭头定数字位数的方式
  3. 当j和j-1数值一样(第0位和第一位一样),j就要下移一位(把不一样的的值赋给第二位)。但是j要小于元组长度。

两种特殊情况:

  • 当数组为空的情况下
  • 当数组的长度为一的情况下

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   ### 代码

```python3
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:#当数组为空的情况下
return 0
if len(nums)==1:#当数组的长度为一的情况下
return 1
i=1
j=1
while j<len(nums) :
if nums[j] == nums[j-1]:
j+=1
else:
nums[i]=nums[j]
i+=1
j+=1
return i

点击并拖拽以移动

img