zoukankan      html  css  js  c++  java
  • 【力扣】283. 移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    示例:

    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]
    说明:

    必须在原数组上操作,不能拷贝额外的数组。
    尽量减少操作次数。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/move-zeroes
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    public void moveZeroes(int[] nums) {
    
            //设置两个指针、一个指针只指向0,一个指针只指向1
            for(int i = 0;  i < nums.length ; i++){
                if(nums[i] == 0){
                    for(int j = i+1; j < nums.length ;j++){
                        if(nums[j] != 0){
                            swap(nums,i,j);
                            break;
                        }
                    }
                }
            }
    
        }
    
        private void swap(int[] nums ,int a,int b){
            int temp = nums[a];
            nums[a] = nums[b];
            nums[b] = temp;
        }

    参考题解:

    public void moveZeroes(int[] nums) {
    
            //设置两个指针、一个指针只指向0,一个指针只指向1
            int zeroIndex = 0;
            int oneIndex = 0;
            while(oneIndex < nums.length){
                if(nums[oneIndex] != 0){
                    swap(nums,oneIndex,zeroIndex);
                    zeroIndex++;
                }
                oneIndex++;
            }
    
        }
    
        private void swap(int[] nums ,int a,int b){
            int temp = nums[a];
            nums[a] = nums[b];
            nums[b] = temp;
        }

    时间复杂度:O(n) -- 题解有可能本来就是末尾为0了,但是还要再交换一遍

    空间复杂度:O(1)

    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    s s r 多用户 简单配置
    iptables vsftp timeout
    透明控件的通用解决方案
    一个带有可选自定义框架的透明对话框类
    把你的框架窗口一个影子
    WinForms形成皮肤
    WPF加载启动画面
    酷,半透明和形状对话框与标准的控制Windows 2000及以上
    在MFC应用程序中创建web风格的GUI
    画在WinForms控制
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/14003475.html
Copyright © 2011-2022 走看看