从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点
树、图 2024年06月14日 209次浏览

斐波那契数列

斐波那契数列思路如果直接递归计算,会存在大量重复计算,不合适。故弄一个数组记录中间的结果。基础情况直接返回定义初始化一个dp表设置终止的情况 n=0, n=1挨个计算 f(n)=f(n-1)+f(n-2)返回最后结果 dp[n]代码class Solution { public int fib
2020年12月03日 450次浏览

两个栈实现队列

题目:用两个栈实现队列思路和算法维护两个栈,第一个栈支持插入操作,第二个栈支持删除操作。根据栈先进后出的特性,我们每次往第一个栈里插入元素后,第一个栈的底部元素是最后插入的元素,第一个栈的顶部元素是下一个待删除的元素。为了维护队列先进先出的特性,我们引入第二个栈,用第二个栈维护待删除的元素,在执行删
2020年12月02日 384次浏览

回溯算法 backtrack

解决一个回溯问题,实际上就是一个决策树的遍历过程。回溯算法的一个特点,不像动态规划存在重叠⼦问题可以优化,回溯算法就是纯暴力穷 举,复杂度一般都很高。
2020年08月02日 545次浏览

动态规划解读,以找零钱为例

动态规划的几要素:首先动态规划问题的一般形式就是求最值求解动态规划的核心问题是穷举存在重叠子问题,需要备忘录或者DP table来优 化
2020年07月24日 450次浏览

时间复杂度计算

复杂度排序O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)实例分析public static void test1(int n) {// 汇编指令/
2020年07月18日 373次浏览

二叉树的前序中序后序遍历--使用递归还有栈

class BTree { Node root; public BTree() { Node l3left = new Node(2, null, null); Node l3right = new Node(3, null, null); No
2020年06月24日 418次浏览

题目:有效的括号

问题给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: &quo
2020年04月15日 402次浏览

题目: K 个一组翻转链表

题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1-
2020年04月15日 396次浏览

(Dijkstra 算法)有权有向图求一个点到其它所有点最短路径

思想Dijkstra算法其实是贪婪算法,贪婪算法一般分阶段求解一个问题,在每个阶段它都把出现的当作是最好的去处理。Dijkstra算法按阶段进行,正像无权最短路径算法一样。在每个阶段,Dijkstra 算法选择一个顶点v,它在所有 unknown 顶点中具有最小的dv。同时算法声明从s到v的最短路径
2020年04月14日 371次浏览