前端学习记录Day2-Remove Element(Leetcode 27)

    技术2026-03-09  9

    两个面试都挂掉了。感觉自己真的特别特别幸运能被第一家公司认可。也愈发觉得不能辜负他们的信任,真的要好好做,好好学,不要让他们后悔选到我😭。

    这道Leetcode上的题是这样的:

    Given an array nums and a value val, remove all instances of that value in-place and return the new length.

    Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

    The order of elements can be changed. It doesn't matter what you leave beyond the new length.

    Example 1:

    Given nums = [3,2,2,3], val = 3, Your function should return length = 2, with the first two elements of nums being 2. It doesn't matter what you leave beyond the returned length.

     中文简单概括一下,就是在原数组上进行操作,使值为val的元素都放到数组后面去,然后返回前面没被删除的元素的长度。换句话说,不要的元素也都被移除了。

    实话说我到现在都不知道在解题的时候,应该怎样想思路(大概还是刷题刷的少吧)。以下有两种思路,均来自discussion board。

    第一种方法: 用两个指针 思路是:做这个remove操作,实际上可以想作是将所有不是目标值val的元素值,按顺序依次赋值到数组里。 这样我们需要两个指针,一个指针跑得快,用来判断每个元素值是否与val相等;另一个指针跑得慢,每次赋值之后才会前进一位,这样才能保证赋值时是从头到尾按顺序一个一个来了。有了这个思路,代码该怎样写就清晰很多。  

    function removeElement(nums,val){ if(!nums) return 0; let slow=0; for(let fast=0;fast<nums.length;fast++){ if(nums[fast]!==val){ nums[slow]=nums[fast]; slow++; } } return slow; }

    第二种方法: 用JS自带的函数 splice()

    这个方法的思路也很简单。 既然要remove掉所有值为val的元素,那自然就真的remove掉咯。这里就可以用到js中一个原生方法:splice() 在遍历数组的时候,如果遇到值为val的元素,就用splice()方法将这个元素删除掉。再接着遍历。遍历一遍之后,剩下的数组就正好是我们需要的(注意:原生JS中没有remove方法喔,remove方法是Jquery的)。

    function removeElement(nums,val){ if(!nums) return 0; for(let i=0;i<nums.length;i++){ if(nums[i]===val){ nums.splice(i,1); i--;//由于删除了一个元素,原本在i+1位置的元素前进了一个位置,所以这里要先减1 } } return nums.length; }

    其实这些思路都很简单,为什么想的时候就是脑子乱乱的呢?也许以后写代码之前应该先把思路答出来,而不是在脑子里空想。然后再看着自己的思路再打。

    今天学到的新的JS的一些函数方法啥的:(以后每天都记录一下把(๑•̀ㅂ•́)و✧

     👻string的方法里有一个s1.indexOf(s2) 用处是可以返回字符串s1中,子字符串s2是从哪一个index开始的。如果这个不是s1的子字符串,就会返回-1。👻函数返回的时候有时会有这种形式: return A && B;

    其中A和B都是表达式。这个其实代表的是:

    if (A){return B;} else {return A;}

    相应的也有下面这种形式:

    return A || B;

    这其实代表的是:

    if (A) return A; else return B;

    这就是所谓的短路求值(short-circuit evaluation),很基础的知识啦,很多语言都是这样的。

     

    Processed: 0.009, SQL: 9