LeetCode
题目:删除数组中相同的元素(简单)
删除数组中相同的元素,并输出返回后的数组长度,和数组中的元素
解题思路
- 空数组,当为空数组时应返回值为0
- 当数组长度不为0时,定义双指针,左指针和快指针,接下来快指针开始移位,当快指针的第i位和第i+1位不相等,则将第i位的值赋值给左指针,同时左指针的的长度增加1,直到快指针便利完成。
代码
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# 解题思路
# 1. 数组为空的情况
n = len(nums)
if n== 0:
return 0
# 2. 数组长度不为0时
else:
# 左指针的初始化长度为1
left = 1
# 快指针的初始化长度也为1
fast = 1
while fast < n:
if nums[fast] != nums[fast-1]:
nums[left] = nums[fast]
left = left +1
return left
初入leedcode坑,若有不合理之处,还请各位多多指教
代码更改:上述代码的不当之处,只是对于左指针进行了移位操作,对于右指针没有进行移位操作,导致运行超时,修改后的代码如下
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# 解题思路
# 1. 数组为空的情况
n = len(nums)
print "n:{}".format(n)
if n== 0:
return 0
# 2. 数组长度不为0时
else:
left = 1
fast = 1
while fast < n:
if nums[fast] != nums[fast-1]:
nums[left] = nums[fast]
left = left +1
print "left:{}".format(left)
fast = fast + 1
print "fast:{}".format(fast)
return left