Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 283. 移动零

LeetCode 283. 移动零

作者头像
诡途
发布于 2022-05-09 11:26:24
发布于 2022-05-09 11:26:24
23800
代码可运行
举报
文章被收录于专栏:诡途的python路诡途的python路
运行总次数:0
代码可运行

阅读助手

1.题目

给定一个数组 nums, 编写一个函数将所有 0 移动到数组的末尾, 同时保持非零元素的相对顺序。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:双指针

#基本思路: 新建一个索引指针j,原索引指针i上的值不等于0时,把值放到j索引位置上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        j=0
        for  i in range(len(nums)):
            if nums[i]!=0:
                nums[j]=nums[i]
                if i !=j:
                    nums[i]=0
                j+=1

解法二:remove&apeend

Python List count() 方法 用于统计某个元素在列表中出现的次数。 语法:list.count(obj) 参数:obj – 列表中统计的对象。 返回值:返回元素在列表中出现的次数。

②Python List remove()方法 remove() 函数用于移除列表中某个值的第一个匹配项。 语法:list.remove(obj) 参数:obj – 列表中要移除的对象。 返回值:该方法没有返回值但是会移除列表中的某个值的第一个匹配项

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i in range(nums.count(0)):
            nums.remove(0)
            nums.append(0)

解法三:布尔排序

key的值指定bool, 就只对0和非零排序, 非0中的1,3,4或者1,4,3不排序; 用lambda x:x!=0也一样,(运行速度要快)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        nums.sort(key=bool, reverse=True)			#运行时间48 ms   内存消耗 14.4 MB
        #nums.sort(key=lambda x:x!=0,reverse=True)  运行时间 28 ms  内存消耗  14.4 MB

一个有问题的解法

LeetCode提交显示错误,解法灵感来源:约瑟夫环问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i in nums:
            if i == 0:
                nums=nums[:nums.index(i)] + nums[nums.index(i)+1:]
                nums.append(i)
        return nums

但是在自己IDE里测试时候是可以正确输出的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nums=[0,1,0,3,12]
for i in nums:
    if i == 0:
        nums=nums[:nums.index(i)] + nums[nums.index(i)+1:]
        print(nums)
        nums.append(i)
        print(nums)
print(nums)

#函数封装
def moveZeroes(nums):
    """
    Do not return anything, modify nums in-place instead.
    """
    for i in nums:
        if i == 0:
            nums=nums[:nums.index(i)] + nums[nums.index(i)+1:]
            nums.append(i)
    return nums
moveZeroes(nums)

最后,换了一个东西测试了下, 可能的原因是 for 遍历的时候nums的内存指向没变

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Phi】斐讯K2P – 从Telnet到刷机
CPU:MEDIATEK MT7621AT 880MHZ RAM:128MB DDR3 SDRAM FLASH:16 MB SPI Flash 2.4G:MT7615DN PA:SKY2623L LNA:SKY15201 5G: MT7615DN FEM:QPF4519 Ports:1 WAN 4LAN
Hyejeong小DD
2018/11/19
11.9K0
斐讯路由器k2 k2p k3刷机教程和固件推荐
自从2年前斐讯开始免费购机活动开始,老高前前后后入了K1 K25 K2P2 K3*2,目前K1已经废弃,K2,K2P,K3都刷好固件后服役,为了让大家更好的薅羊毛,老高总结了一些购买和刷机经验分享给大家。
老高的技术博客
2022/12/28
5.9K0
路由器刷固件
周日下午闲来无聊准备折腾一下宿舍里的垃圾路由器斐讯k2 原本只是听说过,但没自己弄过,尝试着自己刷一下,我这里尝试的是高恪(读作kè) 本来以为要去找远景软件,找了一圈神他妈远景,是恩山
鸿鹄实验室
2021/04/15
2.8K0
路由器刷固件
【Phi】斐讯K2 – 从编程器到刷机
CPU:MEDIATEK MT7620A 580MHZ RAM:64MB DDR2 SDRAM FLASH:8M 25Q64CS1G Flash 2.4G:MT7612EN PA:SKY85728-11 LNA:SKY65405-21 5G: MT7612EN Ports:1 WAN 4LAN (100Mbps)百兆网口
Hyejeong小DD
2018/12/19
6.7K3
小米AC2100路由器刷机教程
之前家中免费的电信宽带免费升级到500M后,原有的360 P1百兆路由器很明显无法提供500M的网络速度,然后购买了一款小米AC2100路由器。
KINDYEAR
2022/07/12
10.3K1
小米AC2100路由器刷机教程
2015年度主流智能路由终极大盘点
小米路由运行基于OpenWRT深度定制的智能路由器操作系统MiWiFi ROM ,手机端可通过内外网访问路由器,也增加了电脑端没有的定时开关信号、开关机、绑定迅雷账号等功能,但这些功能并没有做进网页设置界面,操作起来略显麻烦。另外小米路由器使用的是博通BCM94352无线网卡,无线连接速度只有866Mbps下,读40M/S,CPU占用率53%,写30M/S,CPU占用率62%,如此成绩,对于爱跑分的小米来说实在有点过意不去。
曾响铃
2018/08/20
4030
2015年度主流智能路由终极大盘点
汉土云IP公网盒子拆解及刷机(openwrt,老毛子,爱快,集客固件均可刷)让其变成路由器
今天无意间,在垃圾堆中,发现了这个几年前买的公网IP盒子,就打算拿来,拆开看看里面长什么样,为什么废弃?套餐贵呗,毫无性价比!那就拆开看看他是怎么实现,ip绑定的。
办公魔盒
2025/06/11
1170
汉土云IP公网盒子拆解及刷机(openwrt,老毛子,爱快,集客固件均可刷)让其变成路由器
小米路由器4A 刷入 Breed 与 Padavan - wuuconix's blog
第二天一醒来我就拿出平板准备远程唤醒床下的笔记本,开始过上小康生活。但是却失败了。这让我非常纳闷。
wuuconix
2023/01/30
7.9K0
小米路由器4A 刷入 Breed 与 Padavan - wuuconix's blog
自己动手DIY:路由器刷机改造
最近小区结束了封闭管理,晚上抽个人少的时间段,去外面跑跑步,毕竟将近一个月没有出去过了。没想到在回家的路上见到了一个大博的路由器。小家伙外壳有点土,但是整体成色还不错,啥也没想,带回家看能不能玩一下。接上电之后是可以使用的。但是家里面已经有一台路由器了。想着能不能做一个旁路由使用。
FB客服
2020/03/16
3.4K0
自己动手DIY:路由器刷机改造
极路由4增强版B70(HC5962)刷机
对于极路由大家应该都不算陌生,前两年很火,各大网站炒得沸沸扬扬。 Solli也没忍住,就入手了一台。前几年,斐讯K2,K2P,N1还有其他乱七八糟的路由器仿佛火山爆发一般喷涌而出, 随便搜一搜各式各样的APP琳琅满目。现在看来,这种东西和当时的斐讯K2P一样,都逃不过{倒闭}(daobi)的命运。
冬冬i
2022/12/22
7.4K0
极路由4增强版B70(HC5962)刷机
小米路由器4A刷OpenWRT软路由系统并实现远程访问详细流程
OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,可以让路由器变得更智能,简单的说,路由器刷了OpenWrt就相当于一个Linux系统带无线带多网卡的电脑。
YY的秘密代码小屋
2024/05/31
1.7K0
小米路由器4A刷OpenWRT软路由系统并实现远程访问详细流程
极路由2刷机_极路由刷固件有什么用
查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可以参考这几篇 http://ju.outofmemory.cn/entry/112262 http://koolshare.cn/thread-1857-1-1.html http://blog.csdn.net/a649518776/article/details/41701163
全栈程序员站长
2022/09/20
1.7K0
小米路由器R3G刷机指南
为了能够获得更高权限,开箱后必须要刷开发板,这个是官方支持的,没有什么风险,步骤如下:
vincentKo
2022/09/19
7K0
小米路由器R3G刷机指南
小米 4A 千兆版路由器禁 ping
本文借助 OpenWRTInvasion 利用 Root Shell 漏洞实现小米4A千兆版路由器禁 ping。
AlphaHinex
2024/04/09
6300
小米 4A 千兆版路由器禁 ping
小米路由器3潘多拉固件刷机教程
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/88564078
乐百川
2019/07/02
19.8K0
小米路由器3潘多拉固件刷机教程
六派玩家收割智能路由器
一年前你可能会认为智能路由器是噱头,玩家很多,卖得却不怎么样,所谓“智能”功能大都是增加了翻墙之类的花哨功能,相对于传统路由器而言,并没有革命性的新功能出现。经过一年多煎熬之后,智能路由器正在进入大众化阶段,从销量来看已成为最大众化的智能硬件之一,小米、360纷纷发新造势,让这个曾经被热炒的市场又一下升温不少。 智能路由器成为最大众化智能硬件 智能硬件品类繁多,曾经卖得最好的是智能电视盒子,因为观看影视节目的刚需,品牌和山寨电视盒子销量暴涨,累积达到数千万台。去年此时,智能电视是继智能电视盒子之后最普及的智
罗超频道
2018/04/28
9370
小米路由器mini刷7620老毛子Padavan固件(支持私人云储存 aria2 padavan个人云
手裡有一台閒置的小米MINi路由器聽朋友說刷固件可以實現區域內正常訪問Google跟Youtube等網站。
知识与交流
2024/03/21
6980
小米路由器mini刷7620老毛子Padavan固件(支持私人云储存 aria2 padavan个人云
红米AC2100路由器刷openwrt固件-160mhz-插件全-出国-去广告-多拨
这一步的作用是打开路由器的 Telnet 功能,并刷入不死breed(一定要刷哦,你懂的),为后续可以刷入固件做准备。
ghostsf
2022/09/09
6.8K0
红米AC2100路由器刷openwrt固件-160mhz-插件全-出国-去广告-多拨
小米路由器3刷X-Wrt固件教程
之前写过一篇《小米路由器3刷潘多拉固件教程》,导致一些朋友不小心刷成砖了,在此给这些朋友道个歉。虽说刷机有风险,我也按照官方的教程写的,自己也没遇到什么问题,但是还是有很多朋友刷成砖了,那应该还是和我的教程有关系,在此只能和各位朋友说声对不起了。我现在也没啥解决办法,只能给朋友们推荐一篇《小米路由器3 TTL线救砖经验》,希望能让大家的路由器重焕生机。
乐百川
2020/02/23
7.6K1
【U盘刷机】小米路由器变砖如何100%刷机成功
(adsbygoogle = window.adsbygoogle || []).push({});
拓荒者
2019/05/15
8.4K0
推荐阅读
相关推荐
【Phi】斐讯K2P – 从Telnet到刷机
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验