Leetcode-移除链表元素
生活随笔
收集整理的這篇文章主要介紹了
Leetcode-移除链表元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C? 設置哨兵節點,常規解法
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*///prev->next= curr->next /* 設置一個哨兵節點,作為第一個節點的前驅節點,然后循環判斷即可,不過最后要記得釋放哨兵節點,否則會 超出時間限制的 */ struct ListNode* removeElements(struct ListNode* head, int val){if(!head){return NULL;}//設置一個節點,是第一個節點的前驅節點struct ListNode *first = malloc(sizeof(struct ListNode));first->next = head;struct ListNode *prev=first,*curr=head;while(curr!=NULL){if(curr->val == val){prev->next = curr->next;}else{prev = curr;}curr = curr->next;}head = first->next;free(first);//釋放內存,要不然會超出時間限制return head;遞歸方法
鏈表 一般都是具有天然的遞歸性
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*//* 遞歸 來判斷 鏈表 */ struct ListNode* removeElements(struct ListNode* head, int val){if(!head){return NULL;}//直到到達鏈表尾部才開始刪除重復元素head->next = removeElements(head->next,val);return head->val == val?head->next:head; }C++ 迭代方法?
直接循環判斷,最后再來判斷head節點是否等于val值
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* removeElements(ListNode* head, int val) {if(!head){return NULL;}struct ListNode *p =head,*q;while(p->next){if(p->next->val==val){p->next=p->next->next;}else{p=p->next;}}return head->val == val?head->next:head;} };python 遞歸方法
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = Noneclass Solution:def removeElements(self, head: ListNode, val: int) -> ListNode:if not head:returnhead.next = self.removeElements(head.next,val)return head.next if head.val == val else head?
總結
以上是生活随笔為你收集整理的Leetcode-移除链表元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对广义表L=((a,b),(c,d),(
- 下一篇: InvalidCharacterErro