随笔分类 - 数据结构和算法
摘要:详见:http://wiki.jikexueyuan.com/project/easy-learn-algorithm/dijkstra.html 测试用例:
阅读全文
摘要:详见:http://wiki.jikexueyuan.com/project/easy-learn-algorithm/floyd.html 测试用例:
阅读全文
摘要:题目描述:给予不同面值的硬币若干种种(每种硬币个数无限多),如何用若干种硬币组合为某种面额的钱,使硬币的的个数最少? 在现实生活中,我们往往使用的是贪心算法,比如找零时需要13元,我们先找10元,再找2元,再找1元。如果我们的零钱可用的有1、2、5、9、10。我们找零18元时,贪心算法的策略是:10
阅读全文
摘要:首先,对于数字1,2,3,4而言,如果我们能求出其下一个排列,那么不断地求其下一个排列,得到的就是全排列,关于怎么求一个排列的下一个排列,见:http://www.cnblogs.com/jeysin/p/8647879.html. 基于这种思路,可以用非递归的方式实现求数字的全排列,以下是具体实现
阅读全文
摘要:康托展开式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]表示在未出现的元素中比当前元素小的个数。康托展开式可用于求一个排列位于全排列的第几个。同样,其逆过程可以求在全排列中的第k个排列是多少。具体实现如下: 例题1:
阅读全文
摘要:大家一定玩过“推箱子”这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当
阅读全文
摘要:链接:https://www.nowcoder.com/questionTerminal/621e433919214a9ba46087dd50f09879来源:牛客网度度熊最近对全排列特别感兴趣,对于1到n的一个排列,度度熊发现可以在中间根据大小关系插入合适的大于和小于符号(即 '>' 和 '<'
阅读全文
摘要:度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。问最少操作多少次可以使得数组从小到大有序? 思路: 首先,对于一个长度为size的数组而言,最多调整size-1下即可有序,即每次把倒数第二小的数依次放到后面,
阅读全文
摘要:最长公共子序列、最长公共子串、最小编辑距离是三种常见的字符串比较算法,考虑到其中的动态规划思想、状态转移方程比较类似,实现的方法也是如出一辙,这里将其状态转移方程和相应的实现代码做一个总结。 1、最长公共子序列(longest common sequence) 状态转移方程: 实现代码: 当然了,如
阅读全文
摘要:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 如:
阅读全文
摘要:KMP算法主要是用来解决在一个字符串中是否包含另一个字符串的问题,即在字符串str1中是否包含有str2,如果包含,返回str2在str1中的起始位置,如果不包含,返回-1。KMP算法主要通过一个next数组实现匹配加速,next数组记录下str2中对应每一个字符相应的最长前缀和最长后缀相匹配的长度
阅读全文
摘要:快速排序的递归实现在数据量非常大的时候往往因为递归的层数过多而导致栈溢出,可以考虑模拟递归栈的调用,用一个堆空间中的辅助栈保存每次计算的中间参数,将快排改为非递归版本,实现如下:
阅读全文
摘要:1、前序遍历非递归实现 2、中序遍历非递归实现 3、后序遍历非递归实现
阅读全文
摘要:1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 总结
阅读全文