前端算法-链表移除元素

简介: 前端算法-链表移除元素

题目

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]

思路一

这里我们先使用递归进行实现,首先我们进入函数之后先判断当前head是否为null,如果是则直接返回null,如果不为空则往下执行,接下来我们声明一个res变量,用于存储递归调用自身removeElements函数的返回值,我们调用removeElements函数时,将当前的head的next参数和形参val传递进去,然后使用if判断head的val属性是否等于当前的val形参,如果两者相等,则直接将当前的res变量值返回出去即可,如果不相等,则把res变量值赋值给head的next属性,最后在将head返回出去即可

/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
    if (head === null) {
        return null
    }
    let res = removeElements(head.next, val)
    if(head.val === val){
        return  res;
    }else{
        head.next = res;
        return head;
    }
};

思路二

我们这里先考虑边界值,如果传入的节点为空,就返回空,然后生成一个新的头节点,然后让头节点指向原来链表的第一个节点,在声明一个指针,指向头节点,其next节点为原来链表的第一个节点,如果链表不为空,则循环遍历,如果p指针指向的下一个元素等于val,那么就移除此元素,否则p指针后移,最后返回头节点后面的链表

/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
 if (head === null) {
        return null
    }
    var firstNode = new ListNode();
    firstNode.next = head;
    var p = firstNode;
    while(p.next!=null){
      p.next.val == val? p.next = p.next.next: p = p.next;
    }
    return firstNode.next;
};


相关文章
|
22小时前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
5 1
|
22小时前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
5 1
|
22小时前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
5 0
|
22小时前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
4 0
|
22小时前
|
算法 前端开发 搜索推荐
前端算法之希尔排序
前端算法之希尔排序
4 0
|
12天前
|
存储 算法 前端开发
探索数据结构与算法在前端开发中的应用
本文探讨了数据结构与算法在前端开发中的重要性和应用。通过分析常见的前端场景,结合数据结构与算法的原理,介绍了如何优化前端代码性能,提高用户体验。
|
20天前
|
算法 前端开发
前端算法-岛屿的最大面积-DFS(深度优先搜索)
前端算法-岛屿的最大面积-DFS(深度优先搜索)
10 0
|
算法 前端开发
前端算法-最大三角形面积-鞋带公式&-海伦公式
前端算法-最大三角形面积-鞋带公式&-海伦公式
29 0
|
20天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
11 0
|
24天前
|
算法
算法系列--链表刷题(二)(下)
算法系列--链表刷题(二)(下)
17 0