日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode之Remove Duplicates from Sorted List

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode之Remove Duplicates from Sorted List 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、題目

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->2->2->2 return 1->2

1->2->3->3 return 1->3


2、代碼實現

#include <stdio.h> #include <unistd.h> #include <stdlib.h>struct List_Node {int val;struct List_Node *next; }; struct List_Node* deleteDuplicates(struct List_Node* head) {} void show_list (struct List_Node* head) {while (head != NULL) {printf("val:%d\n", head->val);head = head->next;} }struct List_Node* create_head1(){struct List_Node *p1, *p2, *p3, *p4, *p5;p1 = (struct List_Node *)malloc(sizeof(p1));p2 = (struct List_Node *)malloc(sizeof(p2));p3 = (struct List_Node *)malloc(sizeof(p3));p4 = (struct List_Node *)malloc(sizeof(p4));p5 = (struct List_Node *)malloc(sizeof(p5));p1->val = 1;p2->val = 1;p3->val = 2;p4->val = 3;p5->val = 3; p1->next = p2;p2->next = p3;p3->next = p4;p4->next = p5;p5->next = NULL;return p1;}struct List_Node* create_head2(){struct List_Node *p1, *p2, *p3, *p4, *p5;p1 = (struct List_Node *)malloc(sizeof(p1));p2 = (struct List_Node *)malloc(sizeof(p2));p3 = (struct List_Node *)malloc(sizeof(p3));p4 = (struct List_Node *)malloc(sizeof(p4));p5 = (struct List_Node *)malloc(sizeof(p5));p1->val = 1;p2->val = 2;p3->val = 2;p4->val = 2;p5->val = 2; p1->next = p2;p2->next = p3;p3->next = p4;p4->next = p5;p5->next = NULL;return p1; }struct List_Node* create_head3(){struct List_Node *p1, *p2, *p3, *p4, *p5;p1 = (struct List_Node *)malloc(sizeof(p1));p2 = (struct List_Node *)malloc(sizeof(p2));p3 = (struct List_Node *)malloc(sizeof(p3));p4 = (struct List_Node *)malloc(sizeof(p4));p5 = (struct List_Node *)malloc(sizeof(p5));p1->val = 1;p2->val = 2;p3->val = 3;p4->val = 3;p5->val = 3; p1->next = p2;p2->next = p3;p3->next = p4;p4->next = p5;p5->next = NULL;return p1; }int main() {struct List_Node *head = create_head3();show_list(head);puts("after");struct List_Node *p = head;struct List_Node *q = head->next;while (q != NULL) {if (p->val == q->val) {p->next = q->next; } else {p = q; //注意這里已經是head = head.next// p = p.next;}q = q->next;} show_list(head);return 0; }
?


3、總結

比如1->1->2->3->3
我們這樣分析
第一:需要搞個指針從第二個元素往后移動和前面一個指針指向下一個元素對比,如果前后2個指針的值一樣,那么前面的指針需要指向下一個元素的下一個元素
第二:每對比一步,需要第二個指針往后移動
第三:只有當前元素和下面一個元素的下面一個元素不相等,我們就把他們連接起來,也就是走head = head.next;
過程如下
1->1
1->2 (head = head.next)
1->2->3(head = head.next)
1->2->3->null?

?

總結

以上是生活随笔為你收集整理的LeetCode之Remove Duplicates from Sorted List的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。