动态规划 动态规划,光从字面拆分,可分为 “动态” 与 “规划”,动态,就是状态(分解之后子问题的解)变化的过程。不管三七二十一 . dp[i] 先定 ,寻找状态转移方程(原问题与子问题之间的关系,递推公式),怎么寻找呢?就是前一项和后一项的关系,一般不太容易找得出来。 当然,找到状态方程,还要配上一系列的条件判断,很复杂的一个过程 复杂原问题分解为相对简单子问题 子问题 推出 原问题的解 最优子优子结构 2022-01-11 #数据算法与结构
双指针 采购方案(双指针)一个整组数组 nums,和一个目标值 target。求 一个数组中不大于有多少个组合? 如 nums=[1,2,9,2] target=10; 输出 4 1+2<10;1+9<=10.... 脑子里第一个蹦出来的想法就是先排序,后双 for 遍历,别问为什么,就是脑子太简单了。 看了答案才知道,这套题采用双指针法,着实精妙。结合一个例子 nums 2022-01-11 #数据算法与结构
排序 排序十大经典排序算法演示图https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html 插入排序算法123456789101112131415161718192021222324// floatSortTow([2, 7, 3, 1, 3, 1, 1, 9]);function insertSort(nums) { 2022-01-11 #数据算法与结构
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法,可以在数据规模的对数时间复杂度内完成查找。二分查找可以应用于数组,是因为数组具有有随机访问的特点,并且数组是有序的。二分查找体现的数学思想是「减而治之」,可以通过当前看到的中间元素的特点推测它两侧元素的性质,以达到缩减问题规模的效果。二分查找问题也是面试中经常考到的问题,虽然它的思想很简单,但写好二分查找算法并不是 2022-01-11 #数据算法与结构
滑动窗口 从字面上来看,很容易理解,就是一个窗口,向前一步步移动,遇到的元素,我们窗口某个特性(比如窗口内所有元素的和)增加这个元素,与此同时,我们的窗口左边可以做一些收缩,改变窗口的大小,或着保持一定的长度。而后,right 继续向前移动,直到遍历结束。下面我们看一道例题感受下。 核心:利用指针 必须要深入探究窗口形成的条件. https://leetcode-cn.com/problems/longes 2022-01-11 #数据算法与结构
两数之和 算法思路由于从加法从最后节点开始运算,所以我们可以用栈存,然后出栈做加法,生成节点就可以了。 数组转链表12345678910111213/** arr to reveser Link Node */const arrTransToLink = (arr) => { let ans = null; let i = 0; while (i < arr.length) 2022-01-11 #leetcode
找到中位数的节点 找到中位数的节点[1,2,3,4,5] 快慢指针法1找出链表中位数节点的方法多种多样,其中较为简单的一种是「快慢指针法」。初始时,快指针 fast 和慢指针 slow 均指向链表的左端点 left。我们将快指针 fast 向右移动两次的同时,将慢指针 slow 向右移动一次,直到快指针到达边界(即快指针到达右端点或快指针的下一个节点是右端点)。此时,慢指针对应的元素就是中位数。 代码实现1234 2022-01-11 #leetcode
树的遍历 前言树从根节点,一值向下衍生的 的数据结构,二叉树是我们所关注的重点,对于树的遍历,我一直都不着门道,今天正好有突破,所有故此记录一下 二叉树的直径https://leetcode-cn.com/problems/diameter-of-binary-tree/ 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 2020-05-26 #algorithm
分治与递归 分治分治算法,比较经典的算法思想,且看它的描述:把问题分割多 N 多个子问题,然后求解子问题的答案,利用递归把子问题的结果*合并处理返回. 从上面可以得出以下结论: 一般把大问题进行分割,然后变成一对一求解 一般配合递归,返回”子问题求解的结果,然后进行合并“ 递归递归就是,不断的调用自身函数,直到执行某一个条件,递归终止,返回某个值特点如下: 不断调用函数自身,通常对 传入的值进行切分 有 2020-04-25 #algorithm
前端 微信 支付宝 支付H5 接入 前言近来项目中有要求接入 微信和支付宝 H5 的支付的接入,由于是第一次接入,也遇到了不少的坑。 支付宝支付的接入前端如何接入,并唤起支付宝客户端进行支付 前端的接入,有两种方式 后端返回一个form 表单字符串,我们插入到页面中进行提交即可,页面会跳转到支付宝的一个中间页,由这个中间页来唤起支付宝客户端进行支付 后端返回一个地址,前端直接如下代码即可 1window.location.hr 2020-03-21 #web