真的用链表去做很可能会超时。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;
}


京公网安备 11010502036488号