【力扣hot100题】(022)反转链表

非常经典,我写的比较复杂,一直以来的思路都是这样,就没有去找更简单的解法:(做链表题习惯加头结点的前置节点了,去掉也行)

cpp 复制代码
/**
 * 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* h=new ListNode(0,head);
        ListNode* a=head;
        if(head==nullptr||head->next==nullptr) return head;
        ListNode* b=head->next;
        ListNode* c=b->next;
        a->next=nullptr;
        while(c){
            b->next=a;
            a=b;
            b=c;
            c=c->next;
        }
        b->next=a;
        h->next=b;
        return h->next;
    }
};

答案的缩略版,学到了(将原本的c放进函数内部):

cpp 复制代码
/**
 * 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* pre=nullptr;
        ListNode* now=head;
        while(now){
            ListNode* nex=now->next;
            now->next=pre;
            pre=now;
            now=nex;
        }
        return pre;
    }
};
相关推荐
.格子衫.36 分钟前
032动态规划之区间DP——算法备赛
算法·动态规划
青 春 记 忆39 分钟前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
不会代码的小猴1 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
怪奇云呼军2 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
阿里云大数据AI技术2 小时前
基于 EMR Serverless Ray 实现 Qwen 模型批量推理实践
人工智能·算法·agent
Rambo.xia3 小时前
为什么去马赛克算法,决定了ISP的画质上限
算法·接口隔离原则
Benny_Tang3 小时前
题解:P10230 [COCI 2023/2024 #4] Lepeze
c++·算法
Geek-Chow4 小时前
06 训练管线:数据如何变成权重
人工智能·算法
我变成萤火虫4 小时前
反悔贪心(经典题目讲解)
c++·算法·贪心算法·stl·排序算法·反悔贪心