206. 反转链表
做题思路 or 感想:
1,用双指针法便可解决
2,这种链表的题自己画一下图就很快理解了,相当有意思啊
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode() : val(0), next(nullptr) {} 7 * ListNode(int x) : val(x), next(nullptr) {} 8 * ListNode(int x, ListNode *next) : val(x), next(next) {} 9 * }; 10 */ 11 class Solution { 12 public: 13 ListNode* reverseList(ListNode* head) { 14 if (head == nullptr)return nullptr; //防止奇怪的测试用例 15 ListNode* slow = nullptr; //初始化两个指针 16 ListNode* fast = head; 17 while (fast != nullptr) { 18 ListNode* temp = fast->next; //用temp储存后面的方向,防止后面的指针丢失方向 19 fast->next = slow; //快节点指向后面(反转),然后快慢指针同时向前走一个节点的位置 20 slow = fast; 21 fast = temp; 22 } 23 return slow; //最后fast为nullptr,得到的slow固然是新的头节点了 24 } 25 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端