
算法
文章平均质量分 75
Rgbhuinn
这个作者很懒,什么都没留下…
展开
-
java八大排序算法
学习左程云算法课初级班1,归并排序,这是分治的思想,例如有一个数组,先将左半部分排好序,再将右半部分排好序,最后再将两边的数通过一个辅助数组将它们逐个放到辅助数组里面,这个过程中逐渐比较两边头位置的数的大小。求一个数组的中间位置,可以int mid = l + ((r - l) >> 1);右移运算(位运算)速度快一些。public sta...原创 2018-03-22 18:03:23 · 453 阅读 · 0 评论 -
第八章数组和矩阵问题(一)
1,转圈打印矩阵题目:给定一个矩阵,请按照转圈打印的方式打印它。例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16转圈打印结果:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。要求:时间复杂度O(1)。解答:矩阵分圈处理,在矩阵式利用左上角的坐标(tR,t...原创 2018-07-21 12:17:15 · 240 阅读 · 0 评论 -
第三章二叉树问题系列(二)
10,调整搜索二叉树中两个错误的节点11,判断t1树是否包含t2树全部的拓扑结构题目:给定彼此独立的两颗树头节点分别为t1和t2,判断t1树是否包含t2树全部的拓扑结构。思路:如果t1中某棵子树头节点与t2头节点的值一样,则从这两个头节点开始匹配,匹配的每一步都让t1上的节点跟着t2的先序遍历移动,每移动1步,都检查t1的当前节点是否与t2的当前节点的值一样。如果匹配当中发现不相等的情况就返...原创 2018-07-14 17:41:41 · 320 阅读 · 0 评论 -
第七章位运算
1,不用额外变量交换两个整数的值题目:如何不用任何额外变量交换两个整数的值。解答:给定a、b、c,以下三行代码就可以交换a和b的值a = a ^ b;b = a ^ b;a = a ^ b;如何理解呢?理解异或运算符的特点:一个数异或另一个数两次得到的还是这个数。2,不用任何比较判断找出两个数中较大的数题目:给定两个32位的整数a和b,返回a和b中较大的数。要求:不用任...原创 2018-07-20 11:05:24 · 140 阅读 · 0 评论 -
第三章二叉树问题系列(一)
1,分别用递归和非递归方式实现二叉树的遍历题目:要求用非递归和递归方式分别按照先序、中序、后序遍历二叉树;约定先序遍历顺序为:根、左、右,中序:左、中、右,后序:左、右、中。递归方式较为简单,代码如下:public static void preOrderRecur(Node head) { if (head == null) { return...原创 2018-07-13 23:46:23 · 190 阅读 · 0 评论 -
第五章字符串问题(一)
1,判断两个字符串是否互为变形词题目:给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。请实现判断两个字符串是否为变形词的函数。举例:str1="123",str2="231",返回true;str1="123",s原创 2018-07-19 16:07:54 · 480 阅读 · 0 评论 -
第二章链表问题算法(一)
1,打印两个有序链表的公共部分题目:给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。解答思路: 1,如果head1的值小于head2,则head1往下移动 2,如果head2的值小于head1,则head2往下移动 3,如果head1的值与head2的值相等,则打印这个值,然后head1与head2都往下移 4,head1或head2有任...原创 2018-07-11 01:32:43 · 314 阅读 · 0 评论 -
第一章栈和队列算法
1,设计一个有getMin功能的栈,概念:在实现基本的栈的功能上,再实现返回栈中的最小元素的操作。要求:pop、push、getMin的时间复杂度都是O(1)。设计的栈类型可以使用现成的栈结构。思路:在设计上我们使用两个栈,一个栈用来保存当前的元素,其功能和一个正常的一样,记为stackMin。具体实现方式如下:假设当前数据为newNum,先将其压入stackData栈,然后判断stackM...原创 2018-07-08 21:57:08 · 235 阅读 · 0 评论 -
KMP算法
kmp算法初探,左神进阶班第一课。先理解一个字符串的最长匹配长度,前缀和最长后缀,如abcabcd,对于字符d,它的最长前缀的最长后缀的匹配长度是3,abc=abc。aaaaab,这个字符串的最长前缀和最长后缀匹配长度是4,aaaa和aaaa(第一个a开始和最后一个a往前,前缀不能包括最后一个字符,后缀不能包括第一个字符),人为规定0位置的最长匹配长度为-1,1位置人为规定为0。对于后面的每个位...原创 2018-08-15 19:40:40 · 176 阅读 · 0 评论 -
Manacher算法解析
Manacher算法是经典的算法,它的作用是给定一个字符串,返回str中最长回文字串的长度。举例,str="123",其中的最长回文字串是"1"、"2"、"3",所以返回1。str="abc1234321ab",其中最长的回文字串为&原创 2018-08-15 13:54:55 · 208 阅读 · 0 评论