删除链表的节点

删除链表的节点

https://www.nowcoder.com/practice/f9f78ca89ad643c99701a7142bd59f5d?tpId=13&tqId=2273171&ru=%2Fpractice%2Ffc533c45b73a41b0b44ccba763f866ef&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&sourceUrl=

删除链表的节点

思路:

1.由于要进行删除操作,由于头结点是特殊的,所以为了同一操作,可以设置一个虚的头节点,连接到原链表的头结点

2.设置两个指针:一个指针pre(指向需要删除的节点的前一个节点),和一个指针cur(指向需要删除的节点)

代码:

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param val int整型 
     * @return ListNode类
     */
    public ListNode deleteNode (ListNode head, int val) {
        //对于删除链表节点和创建新的链表的操作,由于头节点的操作都是不同于其他节点的
        //所以为了同一操作,可以设置一个虚的头结点,连在原链表的头节点处
        ListNode dummynode=new ListNode(-1);
        dummynode.next=head;
        //设置两个指针pre和cur,分别指向需要删除的前一个节点和需要删除的节点
        //遇到需要删除的节点,就将前指针指向需要删除的节点的后一个节点
        ListNode pre=dummynode;
        ListNode cur=head;
        while(cur!=null){
            if(cur.val==val){
                pre.next=cur.next;
                break;
            }else{
                pre=cur;
                cur=cur.next;
            }
        }
        return dummynode.next;
    }
}
全部评论

相关推荐

10-15 18:02
已编辑
香港中文大学 golang
秋招有幸一开始就拿了淘天的笔面,并且美团转正的意向也顺利通过后续在淘天和字节两个 9 月主要流程都走到了 hr 面,国庆节后一个通过,一个横向挂了其他面过的包括:b 站一面挂 八股还行,最后手撕给了个笔试压轴限时 15min...整段垮掉阿里控股 kpi一面➕换部门走到二面,控股的都不喜欢开摄像头京东一面挂 常规问题,但是疑似成都 base hc 很少,并且透露了已经转正,目前池子里无人捞腾讯正在二面 一面体验不错,还指出了要改进的地方,提示二面不会再问问过的问题快手一面未知小红书一面未知字节换部门一面不喜欢业务,又回到了人才库大麦约面,准备拒掉虾皮一面 无后续流程,面试聊的还行,感觉上海 base 池子满了---------------------------------------------------------------------------感觉秋招可以结束了,后续感觉走完这个腾讯流程就随缘面面 t 和 b,主包家在南京,奈何南京没啥好的民营企业和互联网氛围,以及好国企又太难进,不知道淘天这个意向够不够直接结束秋招了...今天去深圳 nip 主场看了一下入围赛,主队不是这两家,还是觉得 ig 可惜了,有很好的机会没有抓住。感触和我字节 hr 面挂一样评论区有推荐的字节杭州上海base的业务线或者有字节 hr uu 可以捞一下吗?
肖先生~:大佬都这么强了还要干啥啊
我的求职进度条
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务