leetcode刷题12.移动零——Java版
Posted 一条IT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题12.移动零——Java版相关的知识,希望对你有一定的参考价值。
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐
本题所使用的指针技巧,其实就是快速排序中序列按pivot元素分成两个分组并找到pivot元素位置的操作的基础
——leetcode此题热评
前言
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
Question
283. 移动零
难度:简单
给定一个数组 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)
End
更多算法题欢迎关注专栏《leetcode》
领取学习资料请看左侧【关于作者】
以上是关于leetcode刷题12.移动零——Java版的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—283. 移动零(双指针)—day20