[LeetCode] Remove Duplicates from Sorted List - 链表问题
生活随笔
收集整理的這篇文章主要介紹了
[LeetCode] Remove Duplicates from Sorted List - 链表问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目概述:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
題目解析:
這是一道非常簡單的鏈表題目,題意是刪除單鏈表(已排序)中的重復數字,只需一次判斷前后兩個結點數字是否相等即可。需要注意幾點:
? ? ? ? 1.該鏈表中頭結點就開始存儲數字head->val存在;
? ? ? ? 2.初始判斷if(head==NULL || head->next==NULL),防止出現'[]'或'[1]';
? ? ? ? 3.判斷過程中使用q->next->val==q->val和釋放free臨時結點p;
? ? ? ? 4.若使用中間變量number=q->val判斷時,當else中q指向下一個結點為空時,該句不存在number=q->val會報錯RE,如'[1,1]'。故不建議使用臨時變量。
總之,一道非常基礎的鏈表題目,不需要過于復雜化代碼。
其他類型鏈表題目:
(By:Eastmount 2015-9-10 凌晨3點半? ? http://blog.csdn.net/eastmount/ )
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
題目解析:
這是一道非常簡單的鏈表題目,題意是刪除單鏈表(已排序)中的重復數字,只需一次判斷前后兩個結點數字是否相等即可。需要注意幾點:
? ? ? ? 1.該鏈表中頭結點就開始存儲數字head->val存在;
? ? ? ? 2.初始判斷if(head==NULL || head->next==NULL),防止出現'[]'或'[1]';
? ? ? ? 3.判斷過程中使用q->next->val==q->val和釋放free臨時結點p;
? ? ? ? 4.若使用中間變量number=q->val判斷時,當else中q指向下一個結點為空時,該句不存在number=q->val會報錯RE,如'[1,1]'。故不建議使用臨時變量。
總之,一道非常基礎的鏈表題目,不需要過于復雜化代碼。
我的代碼:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode* head) {struct ListNode *p,*q;q=head;if(head==NULL || head->next==NULL) //防止[]和[1]return head;while(q) {if( q->next!=NULL && q->next->val==q->val ) {//刪除操作 最后freep=q->next;q->next=p->next;free(p);}else {q=q->next;}}return head; }
其他類型鏈表題目:
(By:Eastmount 2015-9-10 凌晨3點半? ? http://blog.csdn.net/eastmount/ )
總結
以上是生活随笔為你收集整理的[LeetCode] Remove Duplicates from Sorted List - 链表问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [LeetCode] Plus One
- 下一篇: [LeetCode] Binary Tr