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

Java集合元素的反转问题

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

Java集合元素的反转问题

Java集合元素的反转

上午刷了几题Leecode其中107题《二叉树的层序遍历II》
题目链接:二叉树的层序遍历II
这题看输入输出明显是一个要用到集合与二叉树的数据结构的题。
此题的关键在于遍历每层后将节点的值存放在集合中,最后将每层每个集合存放于res集合中。但题目要求从叶子节点层开始遍历保存,而不是从根节点开始。
我的思路是先使用一个函数实现自上向下层序遍历节点并用集合保存,毕竟这还是比较容易实现的。代码如下

    public  void cx(TreeNode root,List> res){
     linkedList que=   new linkedList<>();
     if(root!=null){
         que.offer(root);
     }
     while(!que.isEmpty()){
         int n=que.size();
         List path=new ArrayList<>(); 
         for(int i=0;i 

这样就实现了二叉树的普通层序遍历输出,接着我们只要将保存的res集合中的元素(这里也是Integer的一个集合)反转一下就可以得到题目的输出。
集合的反转这里就需要自己造轮子了,下面给出一个效率还可以的一种方法将集合中元素第一个与size()-1交换,第二个与size()-2交换,依次交换下去,这里注意交换需要需要定一个临时的集合来操作。代码如下:

      for(int i=0,j=res.size()-1;i temp= res.get(i);
          res.set(i,res.get(j));
          res.set(j,temp);
      }

一开始以为这种思路可能通过不了或时间复杂度很高,没想到居然效率还行。这可能是得益于集合的反转效率比较高。

上述是本弱鸡的解题的思路,普通人就能想到的,题解中还有很多大佬们双百的题解,直接在二叉树遍历时存储,不需要得到集合再逆序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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