剑指offer第三题
剑指offer的第三题终于还是遇到了链表, 链表和树这些数据结构在面试和笔试的过程中是肯定会遇到的,不一定是算法,就是普通的开发也是需要掌握的。
对于这题,我们需要把链表里面的值先全部取出来,之后进行一个翻转就可以了,翻转可以是两个数组来翻转(因为这个是一个函数),当然也可以直接用c++::algorithm里面的reverse翻转函数,用这个在时间上肯定是有一点损失的,这是包装好的库的通病。 当时我们少申请了一个空间,也算是用时间换空间了
我们先来看看题目的描述
潇洒的解题
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> ret;
while (head) {
ret.push_back(head->val);
head = head->next;
}
std::reverse(ret.begin(), ret.end());
return ret;
}
};