真的用链表去做很可能会超时。2333。
简单搜索了一下,基本上都是改变链表每项内部数据的,而不是把链表重新连接。2333。
用例通过率: 100.00% 运行时间: 233ms 占用内存: 11704KB.

#
# 离经叛道的方法
# @param head ListNode类 the head node
# @return ListNode类
#


class Solution:
    def sortInList(self, head):
        li=[]
        li.append(head.val)
        while head.next:
            head = head.next
            li.append(head.val)
        li.sort()
        ln = []
        for i in li:
            n = ListNode(i)
            ln.append(n)
        for i in range(0, len(ln)-1):
            ln[i].next = ln[i+1]
        return ln[0]


class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

正统方法:用例通过率: 100.00% 运行时间: 459ms 占用内存: 1520KB。

#include <stdio.h>
/**
 * 
 * @param head ListNode类 the head node
 * @return ListNode类
 */
struct ListNode *sortInList(struct ListNode *head)
{
    struct ListNode *small, *p, *q;
    int temp;
    // write code here
    for (p = head; p->next != NULL; p = p->next)
    {
        small = p;
        for (q = p->next; q; q = q->next)
        {
            if (q->val < small->val)
            {
                small = q;
            }
        }
        if (small != p)
        {
            temp = p->val;
            p->val = small->val;
            small->val = temp;
        }
    }
    return head;
}