题目描述

Sort a linked list in O(n log n) time using constant space complexity.

public class Solution {public ListNode sortList(ListNode head) {if(head == null || head.next == null) {return head;}ListNode slow = head;ListNode quick = head;while(quick.next != null && quick.next.next != null) {slow = slow.next;quick = quick.next.next;}ListNode mid = slow;ListNode midNext = mid.next;mid.next = null;return merge(sortList(head), sortList(midNext));}private ListNode merge(ListNode node1, ListNode node2) {ListNode temp = new ListNode(0);ListNode cur = temp;while(node1 != null && node2 != null) {if(node1.val < node2.val) {cur.next = node1;node1 = node1.next;} else {cur.next = node2;node2 = node2.next;}cur = cur.next;}cur.next = node1 == null ? node2 : node1;return temp.next;}
}

题目描述

Sort a linked list using insertion sort.

public class Solution {public ListNode insertionSortList(ListNode head) {if(head == null || head.next == null) {return head;}ListNode temp = new ListNode(Integer.MIN_VALUE);ListNode cur = head;while(cur != null) {ListNode next = cur.next;ListNode pre = temp;while(pre.next != null && pre.next.val < cur.val ) {pre = pre.next;}cur.next = pre.next;pre.next = cur;cur = next;}return temp.next;}
}

题目描述

Given a binary tree, return the postorder traversal of its nodes' values.

For example:
Given binary tree{1,#,2,3},

   1\2/3

return[3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?

import java.util.*;
public class Solution {public ArrayList<Integer> postorderTraversal(TreeNode root) {ArrayList<Integer> result = new ArrayList<>();if(root == null) {return result;}LinkedList<TreeNode> stack = new LinkedList<TreeNode>();stack.push(root);TreeNode pre = null;while(!stack.isEmpty()) {TreeNode temp = stack.peek();if(temp.left == null && temp.right == null) {result.add(temp.val);stack.pop();pre = temp;} else if((pre != null && (pre == temp.left || pre == temp.right))) {result.add(temp.val);stack.pop();pre = temp;} else {if(temp.right != null) {stack.push(temp.right);}if(temp.left != null) {stack.push(temp.left);}}}return result;}
}

题目描述

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree{1,#,2,3},

   1\2/3

return[1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

import java.util.*;
public class Solution {public ArrayList<Integer> preorderTraversal(TreeNode root) {ArrayList<Integer> result = new ArrayList<>();if(root == null) {return result;}LinkedList<TreeNode> stack = new LinkedList<TreeNode>();stack.push(root);while(!stack.isEmpty()){TreeNode temp = stack.pop();result.add(temp.val);if(temp.right != null)stack.push(temp.right);if(temp.left != null)stack.push(temp.left);}return result;}
}

20190724算法题存档相关推荐

  1. 算法题存档20200505

    给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...

  2. 算法题存档20191223

    题目描述 删除给出链表中的重复元素,使链表中的所有元素都只出现一次 例如: 给出的链表为1->1->2,返回1->2. 给出的链表为1->1->2->3->3 ...

  3. 算法题存档20190207

    题目描述 如果一个整数只能被1和自己整除,就称这个数是素数. 如果一个数正着反着都是一样,就称为这个数是回文数.例如:6, 66, 606, 6666 如果一个数字既是素数也是回文数,就称这个数是回文 ...

  4. 算法题存档20190127

    题目描述 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径.迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路.迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与 ...

  5. 算法题存档20200627(树)

    给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 Tru ...

  6. 算法题存档2020425

    给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [   [1,2,3],   [1,3,2],   [2,1,3],   [2,3,1],   [3, ...

  7. 20191219算法题存档

    题目描述 给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组 注意: 可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n public class ...

  8. 20190730算法题存档

    题目描述 Given a singly linked list L: L 0→L 1→-→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→ ...

  9. 20190719算法题存档

    题目描述 小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011.... 并且小Q对于能否被3整除这个性质很感兴趣. 小Q现在希望你能帮他计算一下从数 ...

最新文章

  1. 2018.2.27 9周5次课
  2. SQL SERVER 数据库清空语句 忽略外键 触发器 等
  3. php遍历指定目录中的内容2
  4. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  5. arraylist线程安全吗_Java的线程安全、单例模式、JVM内存结构等知识梳理
  6. 若依前后端分离前端使用Vue3启动教程
  7. OmniPlan Pro 4 for Mac(项目流程管理工具)
  8. mysql取值范围1-10_mysql各种数据类型取值范围
  9. 在计算机上配置超级终端,电脑中如何添加超级终端?添加超级终端的方法
  10. 十大进销存管理软件亮点大对比
  11. 公司企业邮箱开通使用,收不到邮件怎么办?
  12. eslint: globals
  13. win7计算机管理打开超慢,大师解答win7系统打开资源管理器窗口速度很慢的恢复技巧...
  14. 关于OPCUA的配套规范
  15. Android游戏集成豌豆荚支付
  16. 航拍无人机 无人车_无人机将有自己的时刻
  17. 面向对象多项式求导总结
  18. 计算机视觉方向简介 | 机器视觉检测技术
  19. svn分支介绍和使用
  20. 【时空序列预测实战】风险时空预测?keras之ConvLSTM实战来搞定

热门文章

  1. 编程求以孩子兄弟表示法存储的森林的叶子结点数☆
  2. 03-搭建Eureka注册中心和服务端
  3. c语言课程设计运动会成绩管理,C语言课程设计要求编写一段程序题目是运动会分数..._统计师_帮考网...
  4. 什么是实验室人员比对人员_中实在线——程老师小课堂 实验室人员管理技巧...
  5. python中定义一个空的字符串_04python—15种字符串操作
  6. geoserver rest 导入shape文件错误
  7. Hbase问题汇总与解答
  8. 定个小目标,炒股咯....
  9. 关于 ls 命令的一个小小的缺陷
  10. Linux运维之道之ENGINEER1.3(配置SMB共享,配置NFS共享)