算法
Quantum_Dog
这个作者很懒,什么都没留下…
展开
-
堆排序+java
堆的概念在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿。堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。举例来说,对于n个元素的序列{R0,R1, ... ,Rn}当且仅当满足下列关系之一时,称之为堆:(1) Ri<= R2i+1且Ri...转载 2019-03-01 10:06:06 · 209 阅读 · 0 评论 -
输出最长公共子序列的长度+打印所有的最长公共子序列+动态规划+java
图文详解动态规划原理——链接相关概念子序列形式化定义:给定一个序列X=<x1,x2,x3,x4...,xm>,另一个序列Z=<z1,z2,z3,z4...,zk>,若存在一个严格递增的X的下标序列<i1,i2,i3,...,ik>对所有的1,2,3,...,k,都满足x(ik)=zk,则称Z是X的子序列比如Z=<B,C,D,B>是X=&...原创 2019-08-29 10:40:37 · 1545 阅读 · 1 评论 -
最长连续公共子序列(最长公共字串)+长度+输出字串java
求最长连续公共子序列(最长公共字串)+长度+输出字串DP求解最长公共子串前面提到了子串是一种特殊的子序列,因此同样可以用DP来解决。定义数组的存储含义对于后面推导转移方程显得尤为重要,糟糕的数组定义会导致异常繁杂的转移方程。考虑到子串的连续性,将二维数组c[i][j]用来记录具有这样特点的子串——结尾同时也为为串x1x2⋯xi与y1y2⋯yj的结尾——的长度。得到转移方程:最长公...原创 2019-08-29 16:39:27 · 538 阅读 · 0 评论 -
最长递增子序列+java
二分查找——链接(这个一不小心就会错)方法1,时间复杂度为O(N*N)class Solution { public int lengthOfLIS(int[] nums) { if(nums == null || nums.length == 0) return 0; int [] dp = new int[nums.l...原创 2019-09-02 11:26:08 · 332 阅读 · 0 评论 -
二分搜索+java
算法讲解——链接class Solution { public int searchInsert(int[] nums, int target) { if(nums== null || nums.length==0) return 0; if(nums[nums.length-1]<target) ...原创 2019-09-02 16:26:05 · 193 阅读 · 0 评论 -
最大连续子序列的和+java
{1,-3,7,8,-4,12,-10,6} , 最大和子序列为 {7,8,-4,12} ,最大和为23方法1,O(N)的优化算法,只求和,不输出序列的起点和终点方法2,o(n),既求和,也求该序列的起点和终点(输出该子序列)/** * 求解思路:用sum(j)表示a1到aj的和,很容易求出动态规划的递归式: * sum(j) = max(sum(j-1)...原创 2019-09-03 10:10:06 · 475 阅读 · 0 评论