• [leetCode]27.移除元素


    在这里插入图片描述

    解法一 暴力法

    定义一个指针i指向nums第一位,向后遍历,如果遇到nums[i]=val则将nums[i]之后的元素整体向前移动一位

    class Solution {
        public int removeElement(int[] nums, int val) {
            int len = nums.length;
            int i = 0;//定义一个i指针指向数组第一位
            for(; i < len;){
                if(nums[i] == val){//如果当前元素为val,将当前元素之后的元素向前移动
                    for(int j = i; j < nums.length - 1; j++){
                        nums[j]=nums[j+1];
                    }
                    len--;
                }else{//i++,得在这里控制i++
                    i++;
                }
            }
            return len;
        }
    }
    

    解法二 双指针法

    定义一个快指针j与慢指针i,一开始指向首元素。如果nums[j]==val,则递增j跳过该元素,如果nums[j]!=val则将nums[j]赋值给nums[i]

    class Solution {
        //双指针法
        public int removeElement(int[] nums, int val) {
            int i = 0;//指向数组首元素
            //j最开始指向首元素
            for(int j = 0; j < nums.length; j++){
                //j++跳过nums[j]=val的元素,
                if(nums[j]!=val){
                    nums[i] = nums[j];
                    i++;
                }
            }
            return i;
        }
    }
    

    解法三 双指针法 --移除较少元素

    当遇到 nums[i] = valnums[i]=val 时,可以将当前元素与最后一个元素进行交换,并释放最后一个元素。这实际上使数组的大小减少了 1。

    class Solution {
        //双指针法 --移除较少元素
        public int removeElement(int[] nums, int val) {
            int len = nums.length;
            int i = 0;//定义一个i指针指向数组第一位
            while(i < len){
                if(nums[i] == val){//如果当前元素为val,将最后一个元素赋值给当前元素
                    nums[i]=nums[len-1];
                    len--;
                }else{//i++,得在这里控制i++
                    i++;
                }
            }
            return len;
        }
    }
    
  • 相关阅读:
    Qt之qInstallMessageHandler(重定向至文件)
    linux下MySQL安装及设置
    Apache2 同源策略解决方案
    BSD和云 – 不可错过的BSD聚会
    Nginx转发地址解决跨域问题
    Nginx下css的链接问题
    nginx 基本操作
    Azure 媒体服务可将优质内容传输至 Apple TV
    支付宝接口
    drf过滤组件
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860027.html
Copyright © 2020-2023  润新知