Leetcode刷题记录——27. 移除元素

在这里插入图片描述
在这里插入图片描述
题目要求是使用常数大小的空间复杂度

思路:我们设置一个start指针 一个end指针
一个从队首 一个从队尾

若start所指元素等于val 使其和end所指位置对换 并将end前移
注意 此时start不能动
若start所指元素不等于val 则将start后移

当start和end重合后,start即为所求

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        length = len(nums)
        if length == 1:
            return 0 if nums[0] == val else 1
        start = 0
        end = length - 1
        
        #for i,value in enumerate(nums):
        while start <= end:
            if nums[start] == val:
                nums[start],nums[end] = nums[end],nums[start]
                end -= 1
            else:#nums[start] != val
                start += 1
        return start
发布了59 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/105477688