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