zoukankan      html  css  js  c++  java
  • [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;
        }
    }
    
  • 相关阅读:
    排序算法比较及其应用
    confluence wiki 安装
    hbase优缺点
    maven nexus私服搭建
    IntelliJ Idea 2017 免费激活方法
    presto-cli通过hive查询hdfs
    monit拉起服务
    MAC nginx代理设置
    kafka-manager安装
    flume从log4j收集日志输出到kafka
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860027.html
Copyright © 2011-2022 走看看