当前位置 博文首页 > 一条IT:【leetcode刷题】12.移动零——Java版
?欢迎订阅《leetcode》专栏,每日一题,每天进步?
本题所使用的指针技巧,其实就是快速排序中序列按pivot元素分成两个分组并找到pivot元素位置的操作的基础
——leetcode此题热评
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
难度:简单
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。
Solution
类似之前的
有序数组合并
依然采用
双指针
法
- 定义两个指针,一个指向零,一个指向非零。
- 指向非零的指针先移动
- 如果当前元素不等于零,和零指针交换值,并且零指针前进一
同样的27.移除元素,大家可以练习一下
Code
所有
leetcode
代码已同步至github欢迎
star
/** * @author yitiaoIT */ class Solution { public void moveZeroes(int[] nums) { int notZero=0; int zero=0; while(notZero<nums.length){ if (nums[notZero]!=0){ int tmp; tmp=nums[notZero]; nums[notZero]=nums[zero]; nums[zero]=tmp; zero++; } notZero++; } } }
Result
复杂度分析
- 时间复杂度:O(N)
🌈寻宝
?今天是坚持刷题更文的第12/100天
?各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
?更多算法题欢迎关注专栏《leetcode》
为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等
怎么领取请大家自己找,寻宝游戏现在开始。
找不到可以评论留言,一条就会注意到你。
如果还不行,请私信我。
cs
下一篇:没有了