当前位置:   article > 正文

链表经典面试题_链表面试题

链表面试题

1.删除链表中等于给定值 val 的所有节点。

OJ链接

删除节点的核心是:需要找到这个节点的前一个节点是谁

思路:

定义两个变量prev,cur,prev从head开始,cur从head.next开始prev代表cur的前驱,头节点留在最后处理 ,cur遍历整个链表如果cur.value==key,就让pre.next=cur.next,之后cur=cur.next,否则pre=cur,cur=cur.next

时间复杂度O(N)
在这里插入图片描述
经过上面的删除后,因为cur是从head.next开始遍历的,所以最后需要检查头节点是否是要删除的节点,如果是head=head.next即可
⭐️

  public ListNode removeElements(ListNode head, int val) {
           
       if(head==null){
            return null;
        }
      ListNode pre=head;
       ListNode  cur=head.next;
        while (cur!=null){
            if(cur.val==val){
                pre.next=cur.next;
                cur=cur.next;
            }else {
                pre=cur;
                cur=cur.next;
            }
        }
        if(head.val==val){
            head=head.next;
        }

        return head;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2.反转单链表

OJ链接
思路:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/547967
推荐阅读
相关标签