本文主要是介绍leetcode之旅(7)-Move Zeroes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Move Zeroes
题目描述:
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.Subscribe to see which companies asked this question
思路:
说实话。刚看到有点头大,后面尝试写,思路是遍历每一个元素,如果是0,就把后面的元素往前移动一个,然后把零移到后面。
注意:在循环的时候,不要急着对循环变量加1,先判断移动后,是不是0.如果是零,接着移动,不加1.还有每次移动,都把后面就加一个 零,设置一个变量count技术,后面循环n = n - count
代码:
public class Solution {public void moveZeroes(int[] nums) {int n = nums.length;//用来后面减去移动次数的计数int num = n;int i = 0;while(i < num){if(nums[i] == 0){int last = nums[i];for(int a = i;a < n-1;a++){nums[a] = nums[a+1];}nums[n-1] = last;}if(nums[i] != 0){//如果不是零,才往后加1i = i+1;}else{//减去移动次数,与因为后面都是零num = num-1;}}}
}
这篇关于leetcode之旅(7)-Move Zeroes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!