题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
  public:
 		ListNode *resolve(ListNode *pHead)
	{
		if (!pHead)
			return NULL;
		ListNode *pNextNode = resolve(pHead->next);
		if (!pNextNode)
		{
			return pHead;
		}
		else
		{
			pNextNode->next = pHead;
			pHead->next = NULL;
			return pHead;
		}
	}

	ListNode* ReverseList(ListNode* pHead) {

		ListNode *ret = pHead;
		while (ret && ret->next)
		{
			ret = ret->next;
		}

		resolve(pHead);

		return ret;
	}
};

思路:
	首先定位最后一个子节点: 自然是while和递归中的递;
	

全部评论

相关推荐

10-15 10:57
已编辑
武昌理工学院 FPGA工程师
狠赚笔第一人:老哥学院本没实习还想拿13k学Java狠赚笔呢
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务