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