数据结构与算法
文章平均质量分 73
say_haha
菜鸟
展开
-
动态规划算法
学习动态规划 附上原文地址:[http://www.cnblogs.com/sdjl/articles/1274312.html](http://www.cnblogs.com/sdjl/articles/1274312.html) 参考:教你彻底学会动态规划——入门篇:[http://blog.csdn.net/baidu_28312631/article/details/474187转载 2017-03-13 15:38:15 · 223 阅读 · 0 评论 -
数据结构——八大排序算法理解
时间复杂度空间复杂度稳定性选择类排序简单选择排序nlogn1不稳定堆排序nlogn1不稳定交换类排序冒泡排序n21稳定快速排序nlognnl原创 2017-04-01 16:39:04 · 635 阅读 · 0 评论 -
最长递增子序列
题目描述 牛客网题目对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2...,其中Ui 给定一个数字序列A及序列的长度n,请返回最长上升子序列的长度。测试样例:[2,1,4,3,1,5,6],7返回:4最长递增子序列,Longest Increasing Subs原创 2017-08-15 17:58:42 · 306 阅读 · 0 评论 -
二叉树的最近公共祖先LCA
情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。如果该二叉树是二叉查找树,那么求解LCA十分简单。基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索;如果t小于t1和t2,说明t1和t2都位于t的右侧,那么从t.right开始搜索;如原创 2017-08-22 18:10:58 · 2003 阅读 · 0 评论 -
最长公共子序列与最长公共子串(Longest Common Subsequence, LCS)
最长公共子序列与最长公共子串 http://www.cnblogs.com/en-heng/p/3963803.html动态规划算法解LCS问题 http://blog.csdn.net/v_JULY_v/article/details/61102691. 问题描述子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串cnblogsbel原创 2017-04-08 23:20:06 · 608 阅读 · 0 评论 -
字符串匹配算法KMP算法
字符串匹配算法方法1 是使用暴力方法方法2 是使用KMP算法import java.util.Scanner;/** * @author xiaohao * @date 创建时间:Jul 29, 2017 4:05:17 PM * @version 1.0 */public class SubstringSearch { public static v原创 2017-07-29 17:01:57 · 370 阅读 · 0 评论 -
最长回文子串manacher算法
最长回文子串子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。基础题:给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。https://www.nowcoder.com/practice/df00c27320b24278b9c25f6bb1e2f3b8?tpId=69&&tqId=2967原创 2017-08-08 16:36:39 · 309 阅读 · 0 评论 -
求最大子矩阵的和、求最大子数组的和
有一个正整数和负整数组成的NxN矩阵,请编写代码找出元素总和最大的子矩阵。求一个M*N的矩阵的最大子矩阵和。比如在如下这个矩阵中: 0 -2 -7 0 9 2 -6 2-4 1 -4 1-1 8 0 -2 拥有最大和的子矩阵为: 9 2-4 1-1 8其和为15。思路:因为矩阵肯定是对齐的,所以如原创 2017-08-11 14:16:59 · 1720 阅读 · 0 评论 -
数组分为两部分,使得其和相差最小
【问题】将数组分为两部分,使得两部分的和最接近,返回两部分的差值。例如:int[] array={1,0,1,7,2,4},分为两部分为{1,0,1,2,4},{7},差值为1。参考1:《编程之美》第2.18节,不过问题有所不同,2.18节要求长度为2n的数组分为两个长度为n的数组,使得两部分和最接近。参考2:http://www.tuicool.com/art原创 2017-08-11 17:14:27 · 9834 阅读 · 0 评论 -
单调栈——(直方图内最大矩形 || 最大全1子矩阵 )
单调栈,顾名思义就是说栈内的元素,按照某种方式排序下,必须是单调的。如果新入栈的元素破坏了单调性,就弹出栈内元素,直到满足单调性。它可以很方便地求出某个数的左边或者右边第一个比它大或者小的元素,而且总时间复杂度O(N)。直方图内最大矩阵给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形。例如:7原创 2017-08-17 15:07:08 · 2198 阅读 · 0 评论 -
实现包含min,max,push,pop函数的栈
定义辅助栈分别保存最大值、最小值。import java.util.Scanner;import java.util.Stack;public class Test { public static class myStack { Stack dataStk = new Stack(); Stack minStk = new Stack(); St原创 2017-09-26 21:20:12 · 780 阅读 · 0 评论