首页 > 其他分享 >leetcode hot100-03 移动零

leetcode hot100-03 移动零

时间:2023-11-26 15:45:12浏览次数:43  
标签:03 顺序 nums hot100 移动 leetcode 指针

移动零

地址:https://leetcode.cn/classic/problems/move-zeroes/description/

难点:

  • 在原数组的基础上进行移动
  • 保持相对顺序思考过程:

思考过程:

  • 一开始没有考虑顺序的问题

    • 记录最后一个不是0的位置
    • 从左遍历数据
    • 如果为0 则将数据与最后一位不是0的数据交换
    • 最后不是0的数据更新位置
    • 最后一位不是0的数据和左指针重合则退出

    虽然能到达最后一位都是0的效果,但是最终顺序变了

  • 思考顺序的问题

    • 换一个思路,一个指针指向第一个为0的,第二个指针指向第一个不为0的
    • 两边交换,第一个指针+1 ,原来第二个为0的变为第一个为0的
    • 往复执行
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        i,j = 0,0
        for j in range(len(nums)):
            if nums[j] !=0:
                nums[i],nums[j] = nums[j],nums[i]
                i += 1
func moveZeroes(nums []int) {
    i, j, l := 0, 0, len(nums)
    for j <l {
        if nums[j]!=0{
            nums[j],nums[i] = nums[i],nums[j]
            i ++
        }
        j ++
    } 
}

其实这个双指针和快排序的思路很像

!https://s3-us-west-2.amazonaws.com/secure.notion-static.com/be453783-540c-4548-801f-f36ef64af030/Untitled.png

标签:03,顺序,nums,hot100,移动,leetcode,指针
From: https://www.cnblogs.com/rubeitang/p/17857352.html

相关文章

  • LeetCode 354. (经典问题) 俄罗斯套娃信封问题 (俄罗斯套娃模型 + 最长下降子序列
    packageleetcode;importjava.util.Arrays;publicclasslec154{/***首先是思路来源:https://leetcode.cn/problems/russian-doll-envelopes/solutions/19681/zui-chang-di-zeng-zi-xu-lie-kuo-zhan-dao-er-wei-er/*思路:先按照宽度降序(升序)接着......
  • AcWing 903. 昂贵的聘礼 (超级源点 + 等级限制 + 抽象建图
    package算法提高课;importjava.util.Arrays;importjava.util.Scanner;publicclassacw903{staticintm,n;staticint[]dis,level;staticboolean[]st;staticint[][]g;/**思路:首先用到了虚拟源点,加入了等级限制*......
  • huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form
    问题:2023-11-2607:45:38|ERROR|stderr|raiseHFValidationError(2023-11-2607:45:38|ERROR|stderr|huggingface_hub.utils._validators.HFValidationError:Repoidmustbeintheform'repo_name'or'namespace/repo_name':'/mnt......
  • 聪明办法学python task03,task04
    条件语句  if条件:                      多个条件判断用elif如果判断需要多个条件需同时判断时,可以使用or(或),表示两个条件有一个成立时判断条件成功;使用and(与)时,表示只有两个条件同时成立的情况下,判断条件才成功循环语句:for......
  • Day03 JavaSE介绍与安装卸载
    1.Java三大版本javaSE:标准版(桌面程序,控制台程序开发)JavaME:精简版(嵌入式开发)javaEE:企业级开发(web开发,服务器开发)2.JDK、JRE、JVMJDK:javadevelopmentkitJRE:javaruntimeenvirnmentJVM:javavirtualmachine其中JDK包含了JRE与JVM。JRE包含了JVM。安装了JRE后......
  • 聪明办法学Python task03 & task04
    聪明办法学Python学习笔记chapter2数据类型和操作DataTypesandoperator常用内置类型BuiltinTypes在本节中,我们将要见到这些基本类型:整数Integer(int)浮点数Float布尔值Boolean(bool)类型Type(是的,“类型”也是种类型!)严格的来说,Type是一种类的对象,Python是......
  • #P1033. 迷宫问题
    题意是:给你一个迷宫,起点为S,终点为T,.表示空格,#表示障碍物无法通过,你每次可以从当前位置上下左右移动(不能出界或者撞到障碍物上)你需要找出从起点到终点的最少步数,如果不存在解,输出-1。BFS的练手题usingnamespacestd;intsx,sy,ex,ey;intn,m;intdx[4]={0,0,1,-1};intdy[4......
  • 聪明办法学python-task034
    python要点conda![1700559481851](C:\Users\25322\Documents\WeChatFiles\wxid_xc71h7t6nm2i22\FileStorage\Temp\1700559481851.png)注释单行注释以#开头多行注释可以用多个#号,还有'''和""".程序员最讨厌的10件事:0:别人的代码不写注释​......
  • 聪明办法学Python Task03&Task04
    数据类型和操作DATATYPESANDOPERATORS常用内置类型在本节将会见到这些基本类型:整数(int):浮点数(float):布尔值(bool):True和False​ 这个比较特殊,是用来表示逻辑上的“真”和“假”(或者说“是”和“非”)的一种类型,它 只有两个值,True和False。(注意:这里没......
  • pip install报错"Can't connect to HTTPS URL because the SSL module is not availab
    一、故障现象[root@jenkins/data/package/openssl-1.1.1n]#pip3installemojiWARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect......