当前位置:   article > 正文

LeetCode71

LeetCode71

题目

71. 简化路径 

思路

说实话 最开始没看懂题目什么意思,去看了题解根据“遇到..弹出栈顶元素” 思想写出代码,使用栈来装目录名称,最后所有元素出栈时与文件路径顺序是相反的;因此考虑使用双端队列来实现栈,最后从另一端取出元素,就可以得到与文件路径一致的顺序;

代码

  1. public String simplifyPath(String path) {
  2. Deque<String> stack = new ArrayDeque<>();
  3. // 按/分割目录所在路径
  4. String[] subString = path.split("/");
  5. for(int i = 0; i < subString.length; i ++){
  6. if(subString[i].equals("") || subString[i].equals(".")){
  7. // 空字符串
  8. continue;
  9. }
  10. if(subString[i].equals("..")){
  11. // ..且栈不为空时 弹出栈顶元素
  12. if(!stack.isEmpty()){
  13. stack.pollLast();
  14. }
  15. }
  16. else{
  17. stack.offerLast(subString[i]);
  18. }
  19. }
  20. StringBuilder re = new StringBuilder();
  21. if(stack.isEmpty()){
  22. // 为空 只返回根目录
  23. re.append("/");
  24. }else{
  25. while(!stack.isEmpty()){
  26. re.append("/");
  27. // 从另一端取出元素 先进去的目录先出来 保持顺序
  28. re.append(stack.pollFirst());
  29. }
  30. }
  31. return re.toString();
  32. }

 Tips:双端队列yyds 可以用来实现栈、队列。

题目

 102. 二叉树的层序遍历

思路

 树的广度优先遍历都可以用两个队列+两层循环进行解决;

代码

  1. public List<List<Integer>> levelOrder(TreeNode root) {
  2. List<List<Integer>> re = new ArrayList<>();
  3. // 使用两个队列来实现
  4. if(root == null){
  5. return re;
  6. }
  7. Queue<TreeNode> queue = new LinkedList<>();
  8. queue.add(root);
  9. while(!queue.isEmpty()){
  10. List<Integer> tempNodeList = new ArrayList<>();
  11. Queue<TreeNode> tempQueue = new LinkedList<>();
  12. // 遍历其子节点
  13. TreeNode tempNode = queue.poll();
  14. while(tempNode != null){
  15. // 加入这一层节点的值
  16. tempNodeList.add(tempNode.val);
  17. if(tempNode.left != null){
  18. tempQueue.add(tempNode.left);
  19. }
  20. if(tempNode.right != null){
  21. tempQueue.add(tempNode.right);
  22. }
  23. tempNode = queue.poll();
  24. }
  25. // 更新每一层节点的val
  26. re.add(tempNodeList);
  27. queue = tempQueue;
  28. }
  29. return re;
  30. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/385043
推荐阅读
相关标签
  

闽ICP备14008679号