![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 50
Devil_Satan
这个作者很懒,什么都没留下…
展开
-
矩阵中的路径
状态:未完成,继续补充该问题题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[ab c e s f c s a d e e]是3*4矩阵,其包含字符串"bcced"的路径,但是矩阵中不包含“原创 2017-04-03 14:49:59 · 515 阅读 · 0 评论 -
最长回文子串(Manacher算法)
问题:求最长回文子串,例如abba,最长回文子串为4;abaaaaa,最长回文子串为5。问题详见:POJ3974这里介绍的是Manacher算法,其时间复杂度为O(n)。算法思想:对于字符串“abba”的两边插入“#”,编程“#a#b#b#a#”。同时为了更好地处理越界问题,我们可以在字符串的开始处加入另一个特殊的字符,如“$”,则字符串变为“$#a#b#b#a#”,则:原创 2017-04-19 15:16:39 · 363 阅读 · 0 评论 -
对数组进行指定位置的翻转
/* * 对char数组从start到end位置进行翻转 */ void reverse(char[] str,int start,int end){ char temp; while(start<end){ temp = str[start]; str[start++] = str[end]; str[end--] = temp; } }原创 2017-04-25 19:31:47 · 1453 阅读 · 0 评论 -
KMP模式匹配算法中next和nextval的求解(转)
KMP算法相关转载自:http://blog.sina.com.cn/s/blog_85b0ae450101j2iy.htmlKMP算法由两部分组成:第一部分,计算模式串的next或nextval数组。第二部分,利用计算好的模式串的nextval数组,进行模式匹配。KMP算法中有next数组和nextval数组之分。他们代表的意义和作用完全一样,完全可以混用转载 2017-05-06 21:08:20 · 1503 阅读 · 0 评论 -
leetcode之reorder-list
题目描述Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given{1,2,3,4}, reorder原创 2017-05-25 19:59:12 · 501 阅读 · 0 评论 -
找寻链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。算法实现:这个过程可以表示为下图:(图片之前保存的,引用他人博客的,不过时间太久,找不到原出处了,原作者看到如果介意,可以告诉我)如图中所示,设链起点到环入口点间的距离为x,环入口点到问题1中fast与low重合点的距离为y,步骤一:设两个指针分别为fast和slow,(fast一次走2个结点,s原创 2017-05-10 20:48:21 · 391 阅读 · 0 评论 -
整数中1出现的次数
针对牛客网试题作个记录:问题:整数中1出现的次数(从1到n整数中1出现的次数)题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。代码原创 2017-04-19 20:59:17 · 652 阅读 · 0 评论 -
不用中间变量实现两个数的交换
近期,在学习过程中,碰巧遇到了一个小算法,即如何不用中间变量,实现两个数的交 换。思想:借助“亦或”操作。代码如下: public void swap(int a,int b){ a ^= b; b ^= a; a ^= b; }两次异或操作之后,得到的仍是自身。“&”、“^”等操作还有很多需要学习的地方,在此做下记录。原创 2017-04-06 20:07:17 · 600 阅读 · 0 评论 -
最大连续子序列之和的问题
/***算法复杂度只有O(n)的线性算法*如果子序列的和为负数,那么它就不可能是成为和最大的连续子序列的一部分*/public static int maxSubsequenceSum(int[] a){ int maxSum = 0; int thisSum = 0; for(int i=0,j=0; j {原创 2017-02-26 21:02:37 · 448 阅读 · 0 评论 -
求全排列
递归方法求全排列:分别将每个位置交换到最前面位,之后全排列剩下的位置。百度百科提供一种解法:public class Test { public static char[] text = { 'a', 'b', 'c', 'd', 'e' }; public static void main(String[] args) { permutation(text, 0, t原创 2017-04-18 11:04:00 · 356 阅读 · 0 评论 -
java借助PriorityQueue实现小根堆和大根堆
首先,明确概念:堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆。 根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆。借助类PriorityQueue 可以实现小根堆和大根堆。对于PriorityQueue ,观察帮助文档,可以原创 2017-04-03 16:47:38 · 13537 阅读 · 0 评论 -
皇后问题(棋盘问题)
近期仔细观看数据结构一书,看到了4皇后问题(8皇后问题的简化),在此进行记录。问题描述求4皇后问题的所有合法布局。要求:在一个4*4的棋盘上,每个(皇后)棋子有四个选择的位置,但在任何时刻,棋盘的合法布局都必须满足该约束条件:任何两个棋子都不占据棋盘上的同一行、或者同一列、或者同一对角线。思考类似的构造一棵树,根为空棋盘,第一层节点为在棋盘的第一层放置一个棋子,(四原创 2017-05-08 16:37:28 · 2393 阅读 · 0 评论