算法
dream_back
世界本就单调,愿你五颜六色
展开
-
常用算法4:二叉树--Leetcode
一.二叉树三种常见用法: 1.堆 最大堆:根节点大于等于其子节点 最小堆:根节点小于等于其子节点 2.二叉搜索树(BST:Binary Search Tree) 左小右大:给定节点的左子树要小于它,右子树要大于它 3.表达式树 把表达式的每个量用二叉树表示 4.遍历 所谓前中后是对根节点来说 前序遍历:先遍历根节点 中序遍历:第二遍历根节点 后序遍历:最后遍历根节点 层序遍历:从上到...原创 2020-05-09 10:58:40 · 167 阅读 · 0 评论 -
常用算法3:分治法--Leetcode
所谓分治就是把整个问题分成无关紧要的小问题 执行步骤: 划分问题:整个问题划分成多个无关联的子问题。 递归求解:递归调用求解各个子问题。 合并问题:合并子问题的解,形成原始问题的解 169.求众数 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出...原创 2020-04-18 08:42:57 · 194 阅读 · 0 评论 -
常用算法2:回溯法--Leetcode
递归:为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态……这种用自已来定义自己的方法,称为递归定义。形式如 f(n) = n*f(n-1), if n=0,f(n)=1. 回溯:从问题的某一种可能出发, 搜索从这种情况出发所能达到的所有可能, 当这一条路走到” 尽头 “的时候, 把结果储存,再倒回出发点, 从另一个可能出发, 继续搜索. 这种不断” 回...原创 2020-04-17 08:51:43 · 241 阅读 · 0 评论 -
常用算法1:动态规划--Leetcode
动态规划类似于递归的正向求解,把结果存到变量中,再进行筛选,或者在求解的同时进行筛选,解决了递归的内存不够问题,下面是一些例题的动态规划解法 5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “...原创 2020-04-13 17:31:32 · 129 阅读 · 0 评论