【C语言】Leetcode 1171 从链表中删去总和值为零的连续节点

解题思路:
参考leetcode上面的解法,采用双指针方式,依次循环遍历的方式,及时删除相关节点。
1、p从第一个节点开始,依次跟后续节点求助,如果依次求和不为0,那么p后移动一个节点 p = p -> next。
2、如果从p开始的第n个节点q求和为0,那么p->next直接指向q->next节点。

struct ListNode* removeZeroSumSublists(struct ListNode* head){
    struct ListNode *pre = (struct ListNode *) malloc (sizeof(struct ListNode));
    pre -> val = 0;
    pre -> next = head;
    struct ListNode *p = pre;
    while(p){
        int count = 0; 
        struct ListNode *q = p -> next; 
        while(q){
            count += q->val; 
            if(count == 0){
                p->next = q->next;
            }
            q = q -> next; 
        } 
        p = p->next;
    }
    return  pre->next;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值