算法
西二旗卷饼王
这个作者很懒,什么都没留下…
展开
-
算法--求两个字符串的最长公共子序列(LCS问题)
参考:https://blog.csdn.net/uestclr/article/details/50760563问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA我的实现动态规划:dp[i+1][j...原创 2019-06-21 08:24:33 · 671 阅读 · 0 评论 -
数组全排列---递归方法实现(java)
https://blog.csdn.net/jiao_yu/article/details/52493600组数p = {r1, r2, r3, ... ,rn}, 全排列为perm(p)pn = p - {rn},数组p去掉第ri个元素,剩下的数组因此perm(p) = { r1 perm(p1),r2 perm(p2),... ,rn perm(pn)}其中:当n ...转载 2019-06-20 21:50:49 · 2568 阅读 · 0 评论 -
亚马逊算法题--数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N), 不可以用额外的空间
数组有N+M个数字,数字的范围为1 ... N,打印重复的元素,要求O(M + N),不可以用额外的空间。算法思想:是对数组的前N-1个元素进行标记,在标记过程中如果发现此位置已被标记,那么说明此时的元素值是重复的,于是打印出来public class TestDuplicateElement { @Test public void test() {...原创 2019-06-20 21:51:24 · 342 阅读 · 0 评论 -
求n边形周长的k等分点坐标(今日头条)
题目本题来自今天头条的笔试:有一个n边形(P0, P1, ..., Pn), 每一条边皆为垂直或水平线段。现给定数值k,以P0为起点将n边形的周长分为k段,每段的长度相等,请打印出k等分点的坐标(T0, T1, ..., Tk)的坐标。分析1、可以计算出从第0个点,到第N个点的总距离,作为该点的一个属性保存。2、那么第0个点的总距离即为该多版型周长3、求出等分后每一段的长度d...原创 2019-06-20 21:51:34 · 1278 阅读 · 1 评论 -
LinkLists 两个链表相加
你有两个由单链表表示的数。每个结点代表其中的一位数字。数字的存储是逆序的, 也就是说个位位于链表的表头。写一函数使这两个数相加并返回结果,结果也由链表表示。例子:(3 -> 1 -> 5), (5 -> 9 -> 2)输入:8 -> 0 -> 8解法:链表倒置,相加进位,再倒置。LinkedList支持方法import com.go...原创 2019-06-20 21:52:26 · 385 阅读 · 0 评论 -
二叉树: 根据二叉树的前序数组和中序序遍历数组生成二叉树
https://www.cnblogs.com/googlemeoften/p/5853280.html题目:给定二叉树的前序遍历和中序遍历,生成二叉树。Example:前序遍历数组:preArr[]:{1,2,4,5,3,6,7}中序遍历数组:inArr[]:{4,2,5,1,6,3,7}生成的二叉树如下图:解题思路:由二叉树的前序变量性质可知:preArr[0]...原创 2019-06-20 21:51:46 · 252 阅读 · 0 评论 -
算法--背包问题
参考:https://blog.csdn.net/uestclr/article/details/50760563问题描述背包问题,动态规划经典问题,一个背包有滴定的承重W,有N件物品,每件物品都有自己的价值,记录在数组V中,也都有自己的重量,记录在数组W中,每件物品只能选择要装入还是不装入背包,要求在不超过背包承重的前提下,选出的物品总价值最大。关键逻辑假设物品编号从1到n,一件...原创 2019-06-20 21:51:58 · 307 阅读 · 0 评论 -
算法--最长升序子序列
参考:https://blog.csdn.net/uestclr/article/details/50760563问题描述给定数组arr,返回arr的最长递增子序列的长度,比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9]返回其长度为5.实现动态规划表,dp[i]表示以arr[i]结尾的最长升序子序列的长度 动态规划表,dpStr[i]表...原创 2019-06-20 21:52:04 · 498 阅读 · 0 评论 -
排序算法--插入排序--直接插入排序
https://blog.csdn.net/justloveyou_/article/details/72730597直接插入排序的思想:当插入第i(i>=1)个元素时,前面的V[0],…,V[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素V[i-1],…,V[0]依次比较,找到插入位置即将V[i]插入,同时原来位置上的元素向后顺移。在这里,插入位置的查...原创 2019-06-20 21:52:40 · 293 阅读 · 0 评论 -
排序算法--选择排序--简单选择排序
https://blog.csdn.net/justloveyou_/article/details/72730597public class SortSimpleSelection { @Test public void test() { int[] a = {5, 7, 21, 2, 8, 31, 17, 3, 22, 15, 9, 6}; ...原创 2019-06-20 21:52:52 · 301 阅读 · 0 评论 -
排序算法--插入排序--希尔排序
https://blog.csdn.net/justloveyou_/article/details/72730597public class SortHill { @Test public void test() { int[] a = {5, 7, 21, 2, 8, 31, 17, 3, 22, 15, 9, 6}; for (int...原创 2019-06-20 21:52:12 · 341 阅读 · 0 评论 -
排序算法--选择排序--堆排序
https://blog.csdn.net/u010452388/article/details/81283998基本思想:1.首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端2.将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为n-13.将剩余的n-1个数再构造成大根堆,再将顶端数与n-1位置的数交换,如此反复执行,便能得到有序数组...原创 2019-06-20 21:52:59 · 319 阅读 · 0 评论 -
算法题--计算球迷群体个数&最大球迷群体人数
import org.apache.commons.lang3.StringUtils;import java.util.Scanner;public class TestFansGroup { private static int rowLength; private static int colLength; //球迷二维数组,值为0或1或-1;0代表没球...原创 2019-06-20 21:50:35 · 287 阅读 · 0 评论 -
动态规划算法--字符串转换最小代价问题
题目描述给定两个字符串str1和str2,再给定三个整数ic,dc,rc,分别代表插入、删除、替换一个字符的代价,返回将str1编辑成str2的最小代价。举例:str1="abc" str2="adc" ic=5 dc=3 rc=2,从"abc"编辑到"adc"把b替换成d代价最小,为2;str1="abc" str2="adc" ic=5 dc=3 rc...原创 2019-06-20 21:49:55 · 1421 阅读 · 0 评论