首页 > 代码库 > 刷题记录

刷题记录

  刷题啦,刷题啦,咱也刷算法题。

  先从牛客网的JS方面刷起,接着刷数据结构和算法,然后去刷leetcode,这儿记载自己从出错的地方。

1.题目描述

移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 。
没有认真思考,写下了如下的答案
    function removeWithoutCopy(arr, item) {
        for(i = 0; i < arr.length; i++) {
            if( arr[i] === item) {
                arr.splice(i,1);
            }
        }
        return arr;
    }

然后提交不让通过,哪里出问题了呢?嗯,在splice后,不应该使用i++到下一个元素位置上,因为该处的元素删除了,所以还应该在该处的i上进行下一次判断。正确写法如下

    function removeWithoutCopy(arr, item) {
        for(i = 0; i < arr.length; ) {
            if( arr[i] === item) {
                arr.splice(i,1);
            } else {
                i++;
            }
        }
        return arr;
    }

 

刷题记录