本文主要是介绍刷题 ——反转链表(若有其它解法,继续补充),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
描述
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0≤𝑛≤10000≤n≤1000
要求:空间复杂度 𝑂(1)O(1) ,时间复杂度 𝑂(𝑛)O(n) 。
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
解法1:
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类*/ListNode* ReverseList(ListNode* head) {// write code hereListNode*pre = NULL;ListNode* cur =head;ListNode* nex = NULL;while(cur){nex= cur->next;cur->next = pre;pre = cur;cur = nex;}return pre;}
};
这篇关于刷题 ——反转链表(若有其它解法,继续补充)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!