单链表的排序

单链表的排序

http://www.nowcoder.com/questionTerminal/f23604257af94d939848729b1a5cda08

解题思路

  1. 用 vector<ListNode*> 先存储链表中各个节点
  2. 使用 sort 对 vector 进行排序
  3. 将 vector 中的 ListNode 按顺序串联起来
/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    ListNode* sortInList(ListNode* head) {
        vector<ListNode*> nodes;
        ListNode* pNode = head;

        while (pNode) {
            nodes.emplace_back(pNode);
            pNode = pNode->next;
        }

        auto cmp = [](ListNode* a, ListNode* b) -> bool {
            return a->val < b->val;
        };

        sort(nodes.begin(), nodes.end(), cmp);
        for (int i = 0; i < nodes.size() - 1; ++i) {
            nodes[i]->next = nodes[i + 1];
        }
        nodes[nodes.size() - 1]->next = nullptr;
        return nodes[0];
    }
};
全部评论

相关推荐

01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
评论
13
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务