Level 1 (day 3)
第一题
题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/
个人题解:设置虚拟头节点,分别取元素比大小,还有剩下的话加上去
代码:
/**
* 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* mergeTwoLists(ListNode* l1, ListNode* l2) {
auto dummy=new ListNode(-1),tail=dummy;
while(l1 && l2){
if(l1->val<l2->val){
tail=tail->next=l1;
l1=l1->next;
}
else {
tail=tail->next=l2;
l2=l2->next;
}
}
if(l1) tail->next=l1;
if(l2) tail->next=l2;
return dummy->next;
}
};
第二题
题目链接:https://leetcode.cn/problems/reverse-linked-list/
个人题解:设置两个,迭代即可
代码:
/**
* 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* reverseList(ListNode* head) {
ListNode* a=nullptr;
ListNode* b=head;
while(b){
auto c=b->next;
b->next=a;
a=b;
b=c;
}
return a;
}
};