Day3 2024 7/20

前天就刷了大概一道半,有一题一直不理解,也在怀疑是自己的思路,昨天是颓废的一天,没有刷,今天决定要坚持下来,比起不会,我更害怕的是不去回头,我喜欢细品每一道题目,但是有时候却坚持不下来

LC:203

class Solution {

public:

    ListNode* removeElements(ListNode* head, int val) {

if(head==null) return head;

head->next=removeElements(head->next,val);//先递归

return head->val==val? head->next:head;//head节点的值是否是val?是则head->next跳过下一个,否则返回head

调用 removeElements(1 -> 2 -> 6 -> 3 -> 4 -> 5 -> 6, 6)

  • removeElements(2 -> 6 -> 3 -> 4 -> 5 -> 6, 6)
    • removeElements(6 -> 3 -> 4 -> 5 -> 6, 6)
      • removeElements(3 -> 4 -> 5 -> 6, 6)
        • removeElements(4 -> 5 -> 6, 6)
          • removeElements(5 -> 6, 6)
            • removeElements(6, 6) 返回空指针
          • 返回 5 -> null,此时 4 -> 5 -> null
        • 返回 4 -> 5 -> null,此时 3 -> 4 -> 5 -> null
      • 返回 3 -> 4 -> 5 -> null,此时 2 -> 3 -> 4 -> 5 -> null
    • 返回 2 -> 3 -> 4 -> 5 -> null,此时 1 -> 2 -> 3 -> 4 -> 5 -> null

LC:237

class Solution {
public:
    void deleteNode(ListNode* node) {

node->val=node->next->val;

node->next=node->next->next;//本来还想着用新学的做一下,后来发现这个太爽了

LC:83//寒假刷过一次了

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head){

        if(head==nullputr) return head;

ListNode* cur=head;

while(cur){//这里我写错了应该是cur->next 提醒一下自己cur已经指向头结点了,并且开始已经判断过了,所以有点多余了

if(cur->next-val==cur->val){

cur->next=cur->-next>next;

}else

cur=cur->next;

}

rteurn head;

}

LC:21//合并有序链表

class Solution {

public:

    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){

if(l1==null) return l2;

else if(l2==null) return l1;

if(l1->val<l2->val)

l1->next=mergeTwoLists(l1->next,l2)

return l1;

else{

l2->next=mergeTwoLists(l1,l2->next)

return l2;

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值