美文网首页
移动零--快慢指针算法

移动零--快慢指针算法

作者: HellyCla | 来源:发表于2023-04-23 21:09 被阅读0次
image.png

一道简单的原地题目,指直接在给定的数组上修改数值求解,不要复制到新的数组。

  • 思路:解题思路
    定义一个慢指针slow,初始化为0,表示非零元素的位置。
    定义一个快指针fast,初始化为0,表示遍历数组的位置。
    使用一个循环,从头到尾遍历数组nums。
    在循环中,如果快指针指向的元素不等于0,就将它赋值给慢指针指向的位置,然后将慢指针向后移动一位。
    在循环结束后,将慢指针后面的所有元素都置为0。
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        # dual p
        sp=0
        fp=0
        l=len(nums)
        # n=0
        # for i in range(len(nums)):
        while fp<l:
#注意下面两个while也要判断fp是否小于l, 否则会产生数组越界的问题
            while fp<l and nums[fp]==0:
                fp+=1
                # n+=1
            while fp<l and nums[fp]!=0:
                nums[sp]=nums[fp]
                sp+=1
                fp+=1
        while sp<l:
            nums[sp]=0
            sp+=1
        return nums
image.png

相关文章

  • 快慢指针的应用

    快慢指针 快慢指针中的快慢指的是移动的步长,快慢分别指的是快指针每次移动两步,满指针每次移动一步 快慢指针的应用 ...

  • 快慢指针总结

    快慢指针 所谓「快慢指针」是指设定两个指针,其中快的指针的移动速度是慢的指针的移动速度的两倍;“快慢指针”方法主要...

  • 快慢指针的应用

    快慢指针的快慢主要是指在遍历链表过程中指针移动速度的快慢。比如遍历单链表,我们可以让指针每次移动一个节点,也可以让...

  • leetcode第142题:环形链表II [中等]

    题目描述 考点 链表 双指针(快慢指针) 解题思路 设置快慢指针slow, fast; 慢指针slow每次移动一个...

  • 判断单链表环的快慢指针法

    快慢指针法 算法步骤 初始化快慢指针 循环处理,快指针走两步,慢指针走一步,直到发现环或者到达链表结尾 伪代码 环...

  • 环形链表

    快慢指针 我们定义两个指针,一快一满。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在位置 head,...

  • Tourist with Data Structure Seco

    链表 读题要仔细,只看题干,容易死的很惨。 设计链表 环形链表 一般环形链表使用快慢指针方式去做,快慢指针算法。参...

  • 利用快慢指针查看链表是否有闭环

    创建两个指针分别指向头节点,快指针每次移动两位,慢指针每次移动一位,如果快慢指针能相遇则说明链表有闭环。 demo...

  • Leetcode-Easy 876. Middle of the

    题目描述 给出一个列表,找出中间节点 思路 结题思路主要是通过快慢指针来找到中间节点:快指针的移动速度是慢指针移动...

  • 每日Leetcode—算法(14)

    141.环形链表 算法(快慢指针): 155.最小栈 算法一: 算法二: 167. 两数之和 II - 输入有序数...

网友评论

      本文标题:移动零--快慢指针算法

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