美文网首页
02.python算法题练习

02.python算法题练习

作者: 软件开发技术修炼 | 来源:发表于2022-05-28 19:02 被阅读0次

    今日算法题,涉及到常见简单的知识点,双指针,另外注意range数组越界的问题

    1、给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致

    思路:
    1,双指针解决
    使用两个指针,右指针始终往右移动,

    如果右指针指向的值等于左指针指向的值,左指针不动。
    如果右指针指向的值不等于左指针指向的值,那么左指针往右移一步,然后再把右指针指向的值赋给左指针。

    # nums = [1, 2, 3, 3, 9, 5, 5]
    nums = [0,0,1,1,4]
    class Solution:
        def removeDuplicates(self, nums: List[int]) -> int:
            for i in range(0,len(nums)-1):
                if nums[i] == nums[i-1]:
                    del nums[i]
            return len(nums)
    
    出错结果

    索引列表:

    从0开始而不是1。当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界。
    如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素。

    修改为:
    class Solution:
        def removeDuplicates(self, nums) -> int:
            for i in range(len(nums)-1,0,-1):
                if nums[i] == nums[i-1]:
                    del nums[i]
            return len(nums)
    
    p = Solution()
    nums = [0,0,1,1,4]
    a = p.removeDuplicates(nums)
    print(a)
    
    #结果:
    3
    [0, 1, 4]
    

    相关文章

      网友评论

          本文标题:02.python算法题练习

          本文链接:https://www.haomeiwen.com/subject/bqoiprtx.html