栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

剑指offer 从尾到头遍历链表 详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指offer 从尾到头遍历链表 详解

剑指offer 从尾到头遍历链表 详解 dfs回顾

dfs
广度优先搜索
对于一个非空节点,我们遍历所有的没有被访问的子节点,然后对于本节点进行操作。

class Solution {
public:
    void dfs(ListNode* temp,vector& ans){
    if (temp)
    {
    dfs(temp->next,ans);
    ans.push_back(temp->val);
    }
}
public:
    vector printListFromTailToHead(ListNode* head) {
        vector ans;
        dfs(head,ans);
        return ans;
    }
};
反转链表的实现

reverse函数
#include < algorithm >

例子:
 1.reverse(str.begin(),str.end()) 反转字符串

2.reverse(vector.begin(),vector.end()) 反转向量

3.reverse(a,a+strlen(a)) 反转数组

同理我们还可以反转很多东西

例如二维向量reverse(ans.begin(),ans.end())
这里最后一列就变成了第一列!

 vector ans;
        ListNode* temp=head;
    
        while(temp){
            ans.push_back(temp->val);
           
            temp=temp->next;
        }
        
        reverse(ans.begin(),ans.end());
        
        return ans;
java代码的实现

java的arraylist类的复习

相比较于c++而言java的list需要初始化,而且java之中不可以有if(node)这样的写法必须是if(node!=null)才行。

arraylist的常用方法
add(index,object)
add(object)
remove(index)
remove(object)
Collections.shuffle(arraylist,rand)

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public ArrayList printListFromTailToHead(ListNode listNode) {
//         由于这里必须要返回arraylist所以我们定义的变量是arraylist
        ArrayList ans=new ArrayList();
        while(listNode!=null){
            ans.add(0,listNode.val);
            listNode=listNode.next;
        }
        Collections.shuffle(ans);
        return ans;
        
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号