美文网首页
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算法题练习

    今日算法题,涉及到常见简单的知识点,双指针,另外注意range数组越界的问题 1、给你一个 升序排列 的数组 nu...

  • LeetCode (算法与数据结构系列 2)

    学习数据结构与算法,三分靠学习,七分靠练习,优秀的程序员都在使用的在线练习的算法题平台,LeetCode。http...

  • 2020-02-01关于刷题的几个建议

    算法刷题 针对性刷题,刻意练习。刻意刷题!不是麻木刷题!刷题前一定要先看书,清楚明白为什么要刷这些题,这些题刷完能...

  • 蓝桥杯算法题练习

    1.入门训练 Fibonacci数列 最基础的,用java,普通无脑递归必爆。 2.入门训练 圆的面积 注意输出的...

  • Java算法中级题练习

    1.求最大公约数和最小公倍数。 运行结果: 2.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个...

  • python算法题练习1

    Description 实现一个函数exp:它接受一个正的小数参数 epsilon,按照如下算法计算 e^x 的近...

  • 1. 美赛赛前如何准备

    硬实力准备: 学习常用模型/算法,并进行实战建模练习学习常用模型的原理,并分别进行应用练习,再进行真题实战练习 学...

  • LeetCode之求两数之和

    记录学习数据结构过程中练习的算法题 本题是关于数组的练习,题干清晰,难度简单,没有太多需要说明的地方 1.暴力求解...

  • 02.python 条件语句 if while for

    1.Python if elif else 语句 02.python while 循环 03.python for循环

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

网友评论

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

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