当前位置: 首页 > 后端技术 > PHP

链表和递归

时间:2023-03-29 16:19:33 PHP

链表与递归LeetCode203题目:删除链表中所有等于给定值val的节点。示例:输入:1->2->6->3->4->5->6,val=6输出:1->2->3->4->51。不要使用虚拟头节点publicclassSolution{publicListNoderemoveElements(ListNodehead,intval){//链表不为空,头节点为要删除的元素while(head!=null&&head.val==val){ListNodedelNode=head;head=head.next;delNode.next=null;}if(head==null){//所有元素都是要删除的元素,都已经删除了returnhead;}else{//当前链表头节点不是要删除的元素ListNodeprev=head;while(prev.next!=null){if(prev.next.val==val){//删除ListNodedelNode=prev.next;prev.next=delNode.next;delNode.next=null;}else{//不要删除prev=prev.next;}}返回头;}}}2.使用虚拟头节点公共类Solution2{publicListNoderemoveElements(ListNodehead,intval){//虚拟头节点ListNodedummyHead=newListNode(0);dummyHead.next=头;ListNodeprev=dummyHead;while(prev.next!=null){if(prev.next.val==val){ListNodedelNode=prev.next;prev.next=delNode.next;delNode.next=null;}else{prev=prev.next;}}返回dummyHead.next;}}3.递归publicclassSolution3{publicListNoderemoveElements(ListNodehead,intval){if(head==null){returnhead;}head.next=removeElements(head.next,val);返回head.val==val?head.next:头;}}

最新推荐
猜你喜欢