class Solution:
def printListFromTailToHead(self, listNode):
l = len(listNode) - 1
a = 0
new_listNode = []
while l+1:
new_listNode.append(listNode[l])
l -= 1
return new_listNode
if __name__ == '__main__':
listNode = [1,2,3]
a = Solution().printListFromTailToHead(listNode)
print(a)
犯错的地方在
1、创建数组的时候创建的是创建直接a = [] 不是 a = [n],错的很低级
2、while l和while l+1
当然这可能是最蠢的方法
但是调试没有通过!!!日
分享下其他厉害思想
1、递归
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def printListFromTailToHead(self, listNode):
# write code here
if listNode is None:
return []
return self.printListFromTailToHead(listNode.next) + [listNode.val]
#是数组和另一个数组合并的时候用+, 比如a = [1], b=[2], a+b = [1,2]
#其余如果不是用数组合并就是用append
思路也不难,就是两个条件
1、若是空list,则直接什么都不加
2、若不是空list,则添加listNode的末尾值
2、运用栈的特性
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=new Stack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
ArrayList<Integer> list=new ArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
}
网友评论