请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

5-3 leetcode-203对于头结点是需要删除的元素情况的优化处理。

老师,您好,感觉leetcode-203如果在不设立虚拟头结点的前提下,其实有一种简便的处理办法。因为如果考虑[1,n-1]范围内的节点,其删除操作具有一致性。只有当待判断节点是头结点的时候,才需要进行特殊处理。因此考虑先不处理头结点,因为处理完该头结点又会来新的头结点,没完没了,先处理[1,n-1]范围内的其他节点,也就是非头结点。
当处理好这些节点之后再来判断头结点需不需要进行处理,处理的操作也很简单,就是一个if else。不过这种方法可能只适应这类特殊情况,学会设立虚拟头结点这种思路才是解决这类问题的“万能公式”。
以下是我依据这种思路提交的代码以及运行结果。

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        if(head==NULL)
            return head;
        ListNode* cur=head;
        while(cur->next!=NULL){
            if(cur->next->val==val){
                ListNode* delNode=cur->next;
                cur->next=delNode->next;
                delete delNode;
            }
            else
                cur=cur->next;
        }
        if(head->val==val){
            ListNode* delNode=head;
            head=head->next;
            delete delNode;
        }
        return head;
    }
};

图片描述

正在回答

2回答

没有问题:)


赞!感谢你的分享:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 怀瑜 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-07-11 11:11:33
agjsytt 2020-03-24 12:34:06

有道理

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号