输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表节点定义如下:
1 | struct ListNode |
- 内存分配不是在创建链表时一次性完成的,由于没有闲置的内存,链表的空间效率比数组高。
- 如果我们打算修改输入的数据,最好先问面试官是不是允许修改。
- 典型的后进先出,可以用栈实现这种顺序。递归本质上就是一个栈结构,但有可能导致函数调用栈溢出,显然用栈基于循环实现的代码的鲁棒性要好一些。
- 考查对循环、递归、栈 3 个相互关联的概念的理解。
输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表节点定义如下:
1 | struct ListNode |
请实现一个函数,把字符串中的每个空格替换成“20%”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。
在一个长度为 n+1 的数组里的所有数字都在 1~n 的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为 8 的数组 [2, 3, 5, 4, 3, 2, 6, 7],那么对应的输出是重复的数字 2 或者 3。
在一个长度为 n 的数组里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 [2, 3, 1, 0, 2, 5, 3],那么对应的输出是重复的数字 2 或者 3。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。