06. 从尾到头打印链表

普通

  1. class Solution {
  2. public:
  3. vector<int> reversePrint(ListNode* head) {
  4. int arrSize=0;
  5. vector<int> ans;
  6. for(auto it=head;it!=NULL;it=it->next){
  7. arrSize++;
  8. }
  9. ans.resize(arrSize);
  10. int i=arrSize-1;
  11. for(auto it=head;it!=NULL;it=it->next,i--){
  12. ans[i]=it->val;
  13. }
  14. return ans;
  15. }
  16. };

❤递归

  1. class Solution {
  2. public:
  3. vector<int> reversePrint(ListNode* head) {
  4. cnt=0;
  5. dfs(head,0);
  6. return ans;
  7. }
  8. private:
  9. vector<int> ans;
  10. int cnt;
  11. void dfs(ListNode* head,int i){
  12. if(head==NULL){
  13. cnt=i;
  14. ans.resize(cnt);
  15. return;
  16. }
  17. dfs(head->next,i+1);
  18. ans[cnt-i-1]=head->val; //此处一定要注意!
  19. }
  20. };