一、題目描述
給定一個排序鏈表,洗掉所有重復的元素,使得每個元素只出現一次,
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
二、解題思路
由于輸入的串列已排序,因此我們可以通過將結點的值與它之前的結點進行比較來確定它是否為重復結點,如果它是重復的,我們更改上一個結點的 next 指標,以便它跳過當前結點并直接指向下一個結點,
這里我們定義兩個指標變數
1、當前遍歷的節點cur?
2、當前遍歷的前置節點pre
指定 pre 指標指向頭部head
指定 cur 指標指向head->next
cur存在為回圈遍歷條件,當cur為空時代表鏈表遍歷完畢,回圈結束
當 cur.val 和 pre.val 相等時說明需要去重,則將 pre 的下一個指標指向cur的下一個,這樣就能達到去重復的效果
如果不相等則pre和cur移動到下一個位置繼續回圈
三、代碼
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode*
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260149.html
標籤:其他
下一篇:利用卷積層實作滑動視窗(Convolutional implementation of sliding windows)
