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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
H5移动端适配原理及方案
工作中接触到了移动端的开发,所以最近学习一下移动端相关内容。目前还是一个初学者,出现任何问题请多多谅解。大家如果只用电脑浏览网页的话,可能差别不算太大,但是如果使用移动设备(如手机和平板电脑)打开网页,就可能会遇到在不同设备上显示效果不尽人意。移动端页面需要具备响应式设计,以适应不同大小和分辨率的移动设备屏幕。使用流体网格布局、弹性图片和媒体查询等技术,确保页面在各种设备上都能良好显示。采用适合移动设备的布局方式,以确保用户在小屏幕上浏览时获得良好的用户体验。
bug开发工程师007
2024/06/14
7300
08-移动端开发教程-移动端适配方案
由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案。
老马
2018/02/18
3.7K0
08-移动端开发教程-移动端适配方案
布局常用解决方案对比(媒体查询、百分比、rem和vw/vh)
简要介绍:前端开发中,静态网页通常需要适应不同分辨率的设备,常用的自适应解决方案包括媒体查询、百分比、rem和vw/vh等。本文从px单位出发,分析了px在移动端布局中的不足,接着介绍了几种不同的自适应解决方案。
用户8639654
2021/07/26
2.3K0
CSS(八)
这一篇,我们来介绍一下响应式设计及其三大关键技术 - 流式布局,弹性媒体和媒体查询。并会介绍移动优先的响应式设计。
1ess
2021/10/29
7870
CSS(八)
移动适配的长度单位
例:html中字体尺寸为 20px,盒子宽度为 5rem,则最后显示的盒子宽度为 100px。
岳泽以
2022/10/26
1.3K0
移动适配的长度单位
细说移动端 经典的REM布局 与 新秀VW布局
说到前端页面的布局方案,可以从远古时代的Table布局说起,然后来到 DIV+CSS布局,之后有了Float布局,Flex布局,Column布局,Grid布局等等。
书童小二
2018/10/09
12.2K0
细说移动端 经典的REM布局 与 新秀VW布局
移动端H5开发之页面适配篇
最近开发并上线了一款H5项目,在这里想和大家分享一下关于项目中使用到的移动端适配技巧,如果对你们有所帮助的话,就多多点赞收藏😃各位看官老爷别着急,在讲页面适配之前,我们先来捋一捋viewport(视口)的概念~在Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的UI, 菜单栏等——即指你正在浏览的文档的那一部分。一般我们所说的视口共包括三种:布局视口、视觉视口和理想视口1.1 布局视口图片在移动端,布局视口被赋予一个默认值,大部分为980px,这保证PC的网页可以在手机浏览器上呈现,用户可以手动对网
三点水的洋
2022/06/10
7.7K1
移动端H5开发之页面适配篇
响应式布局,你需要知道这些
https://juejin.cn/post/6951575591099301895
前端达人
2021/05/11
1.9K0
前端工程师之移动端布局方案
百分比布局是一种等比例缩放的布局方式,也是移动Web开发中比较常见的布局方式。在CSS代码中需要使用百分比来设置盒子的宽高。
张哥编程
2024/12/13
2200
如何做一个自适应网页?
现在手机、电脑、ipad成为了每个家庭必备内容,但是通常设计给到我们的都是一个固定大小的UI,如果用户是一个屏幕小或者大的设备,一般就会出现滚动条或者大片空白内容,为了更好的利用一些空间,或者在各种屏幕上都有一个较好的体验,出现了网页设计的概念,自适应的概念,也就是随着屏幕尺寸的不同能够适配各种内容
FE情报局
2023/09/06
7520
如何做一个自适应网页?
01_移动端布局基础
虽然 H5 的页面与 PC 的 Web 页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。下图是我们需要适配的移动端屏幕设备尺寸,看到这些数据,是不是有一种键盘敲烂的感觉。
张哥编程
2024/12/13
2510
移动端Web App 的屏幕适配方法(总结)
移动端web页面的开发,由于手机屏幕尺寸、分辨率不同,或者需要考虑横竖屏问题,为了使得web页面在不同移动设备上具有相适应的展示效果,需要在开发过程中使用合理的适配方案来解决这个问题。
用户9914333
2022/07/21
1.6K0
【适配】425- 彻底搞懂移动Web开发中的viewport与跨屏适配
viewport是移动端跨屏适配的基石,吃透这一概念,任何复杂多变的适配需求,都可以手到擒来。
pingan8787
2019/11/29
3.4K0
关于移动端适配,你必须要知道的
上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们往往会遇到非常多的概念:像素、分辨率、 PPI、 DPI、 DP、 DIP、 DPR、视口等等,你真的能分清这些概念的意义吗?
ConardLi
2019/05/23
2.2K0
【Web前端】CSS 响应式设计(补充)
随着移动设备的普及,网页设计的焦点逐渐转向了响应式设计。响应式设计不仅要求网页在各种屏幕尺寸上良好展示,还要适应不同设备的特性。
一条晒干的咸鱼
2024/11/19
5360
【Web前端】CSS 响应式设计(补充)
踩过无数坑才懂:支付宝小程序多端适配的实用策略
哈喽,各位小伙伴们!今天小编要和大家分享一个超有料的话题 —— 支付宝小程序多端适配。相信很多开发过支付宝小程序的朋友,都在这个多端适配的 “大坑” 里摸爬滚打过,小编我也不例外呀,那真的是一把辛酸泪😭。不过别担心,今天小编就把自己踩过无数坑才总结出来的实用策略分享给大家,让大家少走弯路,轻松搞定支付宝小程序多端适配!
小白的大数据之旅
2025/04/21
1500
踩过无数坑才懂:支付宝小程序多端适配的实用策略
H5 App实战进阶十三:H5 App的响应式设计与适配多屏幕
推荐文章:『学习笔记』配置 Nginx 实现站点限流与防止 DDOS 攻击-腾讯云开发者社区-腾讯云
china马斯克
2024/12/03
4540
响应式设计
给所有用户提供同一份 HTML 和 CSS。通过使用几个关键技术,根据用户浏览器视口的大小(或者屏幕分辨率)让内容有不一样的渲染结果。这种方式不需要分别维护两个网站。只需要创建一个网站,就可以在智能手机、平板,或者其他任何设备上运行。网页设计师 Ethan Marcotte 称这种方式为响应式设计(responsive design)。
Cellinlab
2023/05/17
2.6K0
CSS&HTML面经专题——(四)移动端响应式布局
在移动端viewport视口(pc端没有这个概念)就是浏览器显示页面内容的屏幕区域。
玖柒的小窝
2021/10/26
2.6K0
CSS Viewport 单位,很多人还不知道使用它来快速布局!
CSS Viewport units(视口单位)在过去几年已经出现了,随着时间的推移,越来越多的开发人员开始使用它们。它们的好处在于为我们提供了一种不需要使用J avaScript 就能以动态的方式调整大小的方法。而且,如果它失效,也有很多备用方案。
前端小智@大迁世界
2020/07/03
3.6K0
CSS Viewport 单位,很多人还不知道使用它来快速布局!
推荐阅读
相关推荐
H5移动端适配原理及方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验