天天看點

2021-09-12題目:删除數組中相同的元素(簡單)

LeetCode

  • 題目:删除數組中相同的元素(簡單)
    • 解題思路
      • 代碼

題目:删除數組中相同的元素(簡單)

删除數組中相同的元素,并輸出傳回後的數組長度,和數組中的元素

解題思路

  1. 空數組,當為空數組時應傳回值為0
  2. 當數組長度不為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
            
           

繼續閱讀