LeetCode训练Day1

在这里插入图片描述

LeetCode26

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。

思路

因为为非严格递增排列数组,可以考虑判断后一个元素是否与同一个元素相同,如果相同,则去掉后一个元素,这样可以实现原地删除

代码

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        
        i=0
        for i in range(len(nums)-1):
            if nums[i]==nums[i+1]:
                del nums[i+1]
        return len(nums)

LeetCode283

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。

思路

代码

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        left=0
        for right in range (len(nums)):
            if nums[right]!=0:
                nums[left],nums[right]=nums[right],nums[left]
                left +=1
            # print(right)
        return nums

LeetCode 485

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

思路

代码

class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        count=0
        totalcount=0
        for num in nums:
            if num==1:
                count=count+1
            else:
                count=0
            if count>totalcount:
                totalcount=count
        return totalcount

LeetCode 27

思路

代码

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        if nums is None or len(nums) ==0:
            return 0
        l,r = 0,len(nums)-1 #一开始,l指向最左边,R指向最右边
        while l < r:
            while l<r and nums[l] != val: 
                l = l+1
            while l<r and nums[r] == val:
                r = r-1
            nums[l],nums[r] = nums[r],nums[l]
        return l if nums[l] == val else l+1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值