zoukankan      html  css  js  c++  java
  • [LeetCode]: 283: 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:

    1. You must do this in-place without making a copy of the array.
    2. Minimize the total number of operations.

    分析:从后向前逐一查找即可

    代码:

    public class Solution {
        public static void moveZeroes(int[] nums) {
            for(int i =nums.length-1; i >=0 ;i--){
                if(nums[i] ==0){
                    int intTemp = 0;
                    for(int j=i+1;j<nums.length;j++){
                        if(nums[j]!= 0){
                            nums[j-1] = nums[j];
                            nums[j] = 0;
                        }
                    }
                }
            }
        }
    }

    网上高手的思路:现将非0的数前移,再将余下的空位补0

    代码:

    public class Solution {
        public static void moveZeroes(int[] nums) {
            int iCounter = 0;
            for(int i =0;i<nums.length;i++){
                if(nums[i] ==0){
                    iCounter++;
                }
                else{
                    nums[i-iCounter] = nums[i];
                }
            }
            
            for(int i = (nums.length-iCounter);i<nums.length;i++){
                nums[i]=0;
            }
        }
    }
  • 相关阅读:
    Decompiling XAPK Files
    ps4双手柄inputManager设置
    游客须知
    页面类
    Temp
    Web AppDomain
    委托和事件
    动态执行js
    遍历对象属性,成员,方法的方法
    用Windows操作系统的人有时会遇到这样的错误信息:
  • 原文地址:https://www.cnblogs.com/savageclc26/p/4827489.html
Copyright © 2011-2022 走看看