二叉树的题目告一段落,后面陆续做了些基础的题,感觉没有什么好记录的。
这次是一个非常基础题目用递归和遍历两个方法反转一个单链队列。如下所示。
<强>输入:强> <强>输出:强>
递归的方法,考虑了下其实方法很多,我想了比较简单的,就是取出第一个节点,放在后续节队列的最后,如此循环递归直到只有一个节点位置。代码是很好写,就是效率太低,提交运行时间1008 ms,实在是,主要每次一个节点排的序,都要遍历整条队列,其实应该有更好的。
#, Definition for  singly-linked 列表。 #,class ListNode: #,,,,,def __init__(自我,,x): #,,,,,,,,,self.val =, x #,,,,,,,,,self.next =,没有 , class 解决方案: ,,,def reverseList(负责人:自我,还以为;ListNode),→, ListNode: ,,,,,,,if head ==, None 或是head.next ==,没有: ,,,,,,,,,,,return 头 ,,,,,,,node =, self.reverseList (head.next) ,,,,,,,head.next =,没有 ,,,,,,,checknode =,节点 ,,,,,,,while checknode.next !=,没有: ,,,,,,,,,,,checknode =checknode.next ,,,,,,,checknode.next =, ,,,,,,,return 节点
遍历方法也很简单,就是新建一个队列做栈,把单链队列的按照顺序放入,然后反向推出节点,重组队列返回即可。提交运行时间34女士,效率高很多。
#, Definition for  singly-linked 列表。 #,class ListNode: #,,,,,def __init__(自我,,x): #,,,,,,,,,self.val =, x #,,,,,,,,,self.next =,没有 , class 解决方案: ,,,def reverseList(负责人:自我,还以为;ListNode),→, ListNode: ,,,,,,,if head ==,没有: ,,,,,,,,,,,return 头 ,,,,,,,nodeStack =, [] ,,,,,,,while head !=,没有: ,,,,,,,,,,,nodeStack.append(头) ,,,,,,,,,,,head =head.next ,,,,,,,印刷(len (nodeStack)) ,,,,,,,newHead =, nodeStack.pop () ,,,,,,,point =newHead ,,,,,,,while nodeStack !=, []: ,,,,,,,,,,,point.next =, nodeStack.pop () ,,,,,,,,,,,point =point.next ,,,,,,,point.next =,没有 ,,,,,,,return newHead