zoukankan      html  css  js  c++  java
  • LeetCode(27):Remove Element

    Remove Element:Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't matter what you leave beyond the new length.

    题意:从数组中移除所有的给定的某个值,并返回数组新的长度;最后一句的意思是在新的长度后面的元素是任意的,没有顺序的要求,只要是之前数组中的元素即可,后面的元素无所谓。

    思路:采用两个指针left和right,left指向数组的第一个元素,right指向数组的最后一个元素。然后分别进行判断,对于left指针如果其指向的元素值等于指定的值,则用right指定的元素进行替代,前提是right指向的元素不等于指定的值,然left指向其相邻右边的元素,right指向其相邻的左边的元素;对于right指针,如果其指向的元素等于指定的值,则直接其指针指向相邻的左边的元素,否则不改变;直到left<=right。

    代码:

    public int removeElement(int[] nums, int val) {
           int left = 0,right = nums.length-1;
            while(left<=right){
                if(nums[left] == val)//如果left指向的值等于val
                {   
                    if(nums[right]==val) //right指向的值如果也等于val
                    { 
                        right=right - 1;   //right 指向相邻的左边的一个元素
                    }
                    else{
                     nums[left] = nums[right];  //将right指向的值替代为left指向的值
                     left += 1;                 //更新指针
                     right -= 1;                
                 }
             }else  //否则,指向下一个元素
             {
                 left += 1;
             }
        }
        return right+1;  //返回数组长度
            
        }

    结果:

  • 相关阅读:
    Oracle数据库不能使用索引的原因定位
    C语言中的strncmp
    C标准库函数
    C语言字符串函数大全
    Postgres性能检测
    test cert by python
    如何在C语言中巧用正则表达式
    北大软微一年ABCD
    C 语言字符数组的定义与初始化
    25个设计设计灵感的紫色网站案例
  • 原文地址:https://www.cnblogs.com/Lewisr/p/5102163.html
Copyright © 2011-2022 走看看