[刷题] LeetCode 203 Remove Linked List Elements

要求

  • 在链表中删除值为val的所有节点

示例

  • 如 1->2->3->4->5->6->NULL,要求删除值为6的节点
  • 返回1->2->3->4->5->NULL

思路

  • 删除一般元素(包括最后一个元素)
  • 删除第一个元素

实现

常规思路

 1 #include <iostream>
 2 using namespace std;
 3
 4 struct ListNode {
 5     int val;
 6     ListNode *next;
 7     ListNode(int x) : val(x), next(NULL) {}
 8 };
 9
10 ListNode* createLinkedList(int arr[], int n){
11     if( n == 0 )
12         return NULL;
13     ListNode* head = new ListNode(arr[0]);
14     ListNode* curNode = head;
15     for( int i = 1 ; i < n ; i ++ ){
16         curNode->next = new ListNode(arr[i]);
17         curNode = curNode->next;
18     }
19     return head;
20 }
21
22 void printLinkedList(ListNode* head){
23     ListNode* curNode = head;
24     while( curNode != NULL ){
25         cout << curNode->val << " -> ";
26         curNode = curNode->next;
27     }
28     cout<<"NULL"<<endl;
29     return;
30 }
31
32 void deleteLinkedList(ListNode* head){
33     ListNode* curNode = head;
34     while( curNode != NULL){
35         ListNode* delNode = curNode;
36         curNode = curNode->next;
37         delete delNode;
38     }
39     return;
40 }
41
42 class Solution {
43 public:
44     ListNode* removeElements(ListNode* head, int val) {
45
46         while( head != NULL && head->val == val ){
47             ListNode* delNode = head;
48             head = delNode->next;
49             delete delNode;
50         }
51
52         if( head == NULL )
53             return NULL;
54
55         ListNode* cur = head;
56         while( cur->next != NULL ){
57
58             if( cur->next->val == val ){
59                 ListNode* delNode = cur->next;
60                 cur->next = delNode->next;
61                 delete delNode;
62             }else
63                 cur = cur->next;
64         }
65         return head;
66     }
67 };
68
69 int main(){
70     int arr[] = {1,2,3,4,5};
71     int n = sizeof(arr)/sizeof(int);
72
73     ListNode* head = createLinkedList(arr,n);
74     Solution().removeElements(head,3);
75     printLinkedList(head);
76
77     deleteLinkedList(head);
78     return 0;
79 }

设置虚拟头节点

 1 #include <iostream>
 2 using namespace std;
 3
 4 struct ListNode {
 5     int val;
 6     ListNode *next;
 7     ListNode(int x) : val(x), next(NULL) {}
 8 };
 9
10 ListNode* createLinkedList(int arr[], int n){
11     if( n == 0 )
12         return NULL;
13     ListNode* head = new ListNode(arr[0]);
14     ListNode* curNode = head;
15     for( int i = 1 ; i < n ; i ++ ){
16         curNode->next = new ListNode(arr[i]);
17         curNode = curNode->next;
18     }
19     return head;
20 }
21
22 void printLinkedList(ListNode* head){
23     ListNode* curNode = head;
24     while( curNode != NULL ){
25         cout << curNode->val << " -> ";
26         curNode = curNode->next;
27     }
28     cout<<"NULL"<<endl;
29     return;
30 }
31
32 void deleteLinkedList(ListNode* head){
33     ListNode* curNode = head;
34     while( curNode != NULL){
35         ListNode* delNode = curNode;
36         curNode = curNode->next;
37         delete delNode;
38     }
39     return;
40 }
41
42 class Solution {
43 public:
44     ListNode* removeElements(ListNode* head, int val) {
45
46         ListNode* dummyHead = new ListNode(0);
47         dummyHead->next = head;
48
49         ListNode* cur = dummyHead;
50         while( cur->next != NULL ){
51
52             if( cur->next->val == val ){
53                 ListNode* delNode = cur->next;
54                 cur->next = delNode->next;
55                 delete delNode;
56             }else
57                 cur = cur->next;
58         }
59
60         ListNode* retNode = dummyHead->next;
61         delete dummyHead;
62
63         return retNode;
64     }
65 };
66
67 int main(){
68     int arr[] = {1,2,3,4,5};
69     int n = sizeof(arr)/sizeof(int);
70
71     ListNode* head = createLinkedList(arr,n);
72     Solution().removeElements(head,3);
73     printLinkedList(head);
74
75     deleteLinkedList(head);
76     return 0;
77 }

相关

  • 82 Remove Duplicates from Sorted List II
  • 21 Merge Two Sorted Lists

原文地址:https://www.cnblogs.com/cxc1357/p/12635764.html

时间: 2024-08-03 13:03:28

[刷题] LeetCode 203 Remove Linked List Elements的相关文章

leetCode 203. Remove Linked List Elements 链表

203. Remove Linked List Elements Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5 题目大意: 删除链表中全部的目标元素. 代码如下:

LeetCode 203 Remove Linked List Elements(移除链表元素)(*)

翻译 从一个链表中移除所有值为val的元素. 例如 给定:1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 返回:1 --> 2 --> 3 --> 4 --> 5 原文 Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 -

Java [Leetcode 203]Remove Linked List Elements

题目描述: Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5 解题思路: 链表操作. 代码如下: /** * Definition for singly-linked

Leetcode 203. Remove Linked List Elements JAVA语言

Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 题意:删除链表中的节点 /**  * Definition for singly-linked list.  * 

Java for LeetCode 203 Remove Linked List Elements

Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 解题思路: JAVA实现如下: public ListNode removeElements(ListNode h

203. Remove Linked List Elements - LeetCode

Question 203.?Remove Linked List Elements Solution 题目大意:从链表中删除给定的数 思路:遍历链表,如果该节点的值等于给的数就删除该节点,注意首节点 Java实现: public ListNode removeElements(ListNode head, int val) { ListNode cur = head; while (cur != null) { if (cur.next != null && cur.next.val ==

[LeetCode][JavaScript]Remove Linked List Elements

Remove Linked List Elements Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5 https://leetcode.com/problems/r

【LeetCode】203. Remove Linked List Elements

题目: Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 题解: 这道题没什么好讲的,基础操作.需要注意的是链表的第一个node,因为没有前驱节点,所以该node需

【leetcode?python】 203. Remove Linked List Elements

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = None class Solution(object):    def removeElements(self, head, val):        """        :type head: ListNode