LeetCode--283--移动0
问题描述:
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入:[0,1,0,3,12]
输出:[1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
方法1:检测到为0纪录0的个数,不为0时进行赋值运算nums[i - k] = nums[i]
最后将检测到的0补到nums的最后
1 class Solution(object): 2 def moveZeroes(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: void Do not return anything, modify nums in-place instead. 6 """ 7 if len(nums) == 2: 8 if nums[0] == 0: 9 nums[0],nums[1] = nums[1],nums[0] 10 return 11 else: 12 return 13 k = 0 14 for i in range(len(nums)): 15 if nums[i] == 0: 16 k += 1 17 elif nums[i] != 0 : 18 nums[i - k] = nums[i] 19 for j in range(len(nums) - k,len(nums)): 20 nums[j] = 0
方法2:每次将元素等于0的位置变成[]。
1 class Solution(object): 2 def moveZeroes(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: void Do not return anything, modify nums in-place instead. 6 """ 7 i = 0 8 length = len(nums) 9 while i < len(nums): 10 while nums != [] and nums[i] == 0: 11 nums[i:i+1] = [] 12 if i == len(nums): 13 break 14 i += 1 15 nums += (length - len(nums))*[0]
将方法1改进:
1 class Solution(object): 2 def moveZeroes(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: void Do not return anything, modify nums in-place instead. 6 """ 7 length = len(nums) 8 i = 0 9 n = 0 10 while i + n < length: 11 if nums[i] == 0: 12 n += 1 13 del nums[i] 14 else: 15 i += 1 16 nums += [0]*n
2018-09-23 09:07:49
转载于:https://www.cnblogs.com/NPC-assange/p/9691993.html
LeetCode--283--移动0相关推荐
- [东哥的leetcode刷题日记] leetcode 283 : Move Zeroes
leetcode 283 : Move Zeroes 题目链接: https://leetcode-cn.com/problems/move-zeroes/ 难度: 简单 归类 : 数组操作 题目: ...
- LeetCode算法题0:分发糖果【贪心算法】
文章目录 前言 一.题目 二.思路详解 三.搞点实际点儿的(C++实现) 1.略显粗糙的代码实现 2.稍显精致的代码实现 3.最终的代码实现 4.提交结果 总结 前言 本文记录自己在LeetCode上 ...
- leetcode(283)移动零
283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必 ...
- LeetCode 2169. 得到 0 的操作数
文章目录 1. 题目 2. 解题 1. 题目 给你两个 非负 整数 num1 和 num2 . 每一步 操作 中,如果 num1 >= num2 ,你必须用 num1 减 num2 : 否则,你 ...
- leetcode算法题--0~n-1中缺失的数字
原题链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/ int missingNumber(vector<int>&am ...
- Leetcode 283. 移动零 解题思路及C++实现
解题思路: 只需做一次遍历,用一个数 count 和累加已出现的 0 的个数,当 nums[i]不等于0,且count 大于0时,将 nums[i] 向前移动count 位 即可. 最后,将数组的最后 ...
- leetcode 283. 移动零(Java版)
题目 题解 定义一个变量 count,用于记录累计非 0 个数,可以理解为指向第一个 0 位置的指针. 对数组进行遍历,每当遇到非 0 元素时,将此元素复制到 count 指针所指向的位置. 数组遍历 ...
- LeetCode 283. Move Zeroes
题目: Given an array nums, write a function to move all 0's to the end of it while maintaining the rel ...
- leetcode 283 Move Zeros; 27 Remove Elements; 26 Remove Duplicated from Sorted Array;
int arr[] = {0,1,0,3,12}; //把数组的值赋给vector vector<int> vec(arr, arr+sizeof(arr)/sizeof(int)); 解 ...
- LeetCode 283 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非 零元素的相对顺序. 请注意 ,必须在不复制数组的情况下原地对数组进行操作. 解法一:使用i遍历数组,使用j标记数组下一个位 ...
最新文章
- Gif(1)-加载视图-交替圆效果
- 【模拟】Codeforces 710C Magic Odd Square
- SAP Hybris Commerce,CRM和C4C的登录语言选择
- Postman从入门到入门
- Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
- c++ java setobjectarrayelement_java中jni的使用:C/C++操作java中的数组
- 七,OpenERP 移库操作模块
- 暴汗~莫明其妙收到一张汇款单......
- 显卡mx150和230哪个好_MX130与MX150差距对比分析
- 那些年啊,那些事——一个程序员的奋斗史 ——16
- Java的随机数原理
- java qq协议 php_Java基于JavaMail实现向QQ邮箱发送邮件
- Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集
- 深度解析论文 基于 LSTM 的 POI 个性化推荐框架
- DS1602液晶显示学习笔记
- 扇贝python编程课_扇贝编程app下载-扇贝编程手机版python「附如何设置自由职业」 - 超好玩...
- 安卓街机模拟器对战源码修改详解(1)
- opencv边界扩充
- linux shell if参数---markx
- 苹果4s怎么越狱教程_苹果手机:iOS12怎么降级iOS12一键刷机降级教程
热门文章
- 政府数据泄漏频现 美国能源部也未幸免
- ubuntu14.04源无法更新--jdk安装出错解决方法
- RHEL6 Tiny Linux 的制作
- java开发之提高java和mysql代码性能和质量
- flex 错误信息类型及解决方法
- java字符串怎么拼接字符串_Java中String使用+ 拼接字符串的原理是什么?
- Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集)
- [Java] 蓝桥杯ALGO-30 算法训练 入学考试
- PAT 乙级 1002. 写出这个数 (20) Java版
- 全国计算机二级C 错题/知识点整理