LeetCode
来源:互联网 发布:java微信昵称特殊字符 编辑:程序博客网 时间:2024/05/20 18:43
题目链接:283. Move Zeroes
题意:给你一个数组nums
,将这个数组中的0
移动到数组的末尾。例:nums = [0, 1, 0, 3, 12]
,处理后,nums
应该是1, 3, 12, 0, 0]
。
注:
- 您必须在本地进行此操作,而无需制作数组的副本。(实在不会翻译了)
- 尽可能减少操作的次数。
这里我的理解是不使用额外的存储空间并且尽可能减少数组中的数的移动次数,也就是通过最少次的移动达到我们的目的。
通过再次翻译这个题目,我似乎觉得我以前的做法是错误的,因为我的思路是移除数组中的0
,在末尾上再补上相应个数的0
,这里是否存在使用额外的空间,以及在注解的第一条中,是否只是禁止使用数组的copy,并不禁止使用某些数字。
对了,最后应该注意一点就是这个题目不要求返回数组,只要求修改数组,我们不需要返回值。
我的解法
class Solution: def moveZeroes(self, nums): nums += [0] * len([nums.remove(0) for x in range(nums.count(0))])
下面是两个大神的解法,思路是一样的,对数组进行排序,排序的规则是将所有数取反在正序排序,取反时0 > not 0
(非0的数变为0,0变为非0),此时所有的0都会被排到后面。
大神解法一:
class Solution: def moveZeroes(self, nums): nums.sort(key = operator.not_)
大神解法二:
class Solution: def moveZeroes(self, nums): nums.sort(key = lambda x : not x)
两种解法的本质是一样的,但是区别就是一个使用了模块的方法,一个是自己写的方法,两者的效率差不多。
虽然我经过思考也写出了一行式的代码,但是和大神们比起来,无论是思路还是对模块的了解程度,都是相差甚远,还要继续努力学习啊。
以上。
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- 第七周项目1
- wms 生产条码管理系统软件的运用
- spring学习总结(一)
- leetcode 672. Bulb Switcher II
- C# MongoDB操作类
- LeetCode
- 游戏开发知识点补习
- 【29】纯css3制作的冒着气泡的瓶子
- Docker实战:使用Dockerfile创建带tomcat服务并支持ssh的Centos Docker镜像
- css-基础概念
- 设计模式(三)建造者模式(转)
- Django Rest FrameWork 全部API简述
- node+sequelize实现单表多表操作
- 文件系统读写--文件读过程代码分析