【力扣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;
    }
};
相关推荐
花心蝴蝶.33 分钟前
JVM 垃圾回收
java·jvm·算法
im_AMBER39 分钟前
hello算法笔记 02
笔记·算法
Michelle80231 小时前
决策树习题
算法·决策树·机器学习
hn小菜鸡1 小时前
LeetCode 2540.最小公共值
数据结构·算法·leetcode
Tisfy1 小时前
LeetCode 0611.有效三角形的个数:双指针
算法·leetcode·题解·双指针
Keying,,,,1 小时前
力扣hot100 | 多维动态规划 | 62. 不同路径、64. 最小路径和、5. 最长回文子串、1143. 最长公共子序列、72. 编辑距离
算法·leetcode·动态规划
lifallen1 小时前
Flink Watermark机制解析
大数据·算法·flink
IT古董1 小时前
【第五章:计算机视觉-项目实战之目标检测实战】1.目标检测算法理论-(6)一阶段目标检测算法YOLO系列思想详解:YOLOV1~YOLOV10
算法·目标检测·计算机视觉
小旺不正经1 小时前
数据库表实现账号池管理
数据库·后端·算法
豆芽8192 小时前
模糊控制Fuzzy Control
人工智能·算法·模糊控制