![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 75
Rgbhuinn
这个作者很懒,什么都没留下…
展开
-
java八大排序算法
学习左程云算法课初级班 1,归并排序,这是分治的思想,例如有一个数组,先将左半部分排好序,再将右半部分排好序,最后再将两边的数通过一个辅助数组将它们逐个放到辅助数组里面,这个过程中逐渐比较两边头位置的数的大小。 求一个数组的中间位置,可以int mid = l + ((r - l) >> 1);右移运算(位运算)速度快一些。 public sta...原创 2018-03-22 18:03:23 · 415 阅读 · 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 · 199 阅读 · 0 评论 -
第三章二叉树问题系列(二)
10,调整搜索二叉树中两个错误的节点 11,判断t1树是否包含t2树全部的拓扑结构 题目:给定彼此独立的两颗树头节点分别为t1和t2,判断t1树是否包含t2树全部的拓扑结构。 思路:如果t1中某棵子树头节点与t2头节点的值一样,则从这两个头节点开始匹配,匹配的每一步都让t1上的节点跟着t2的先序遍历移动,每移动1步,都检查t1的当前节点是否与t2的当前节点的值一样。如果匹配当中发现不相等的情况就返...原创 2018-07-14 17:41:41 · 284 阅读 · 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 · 117 阅读 · 0 评论 -
第三章二叉树问题系列(一)
1,分别用递归和非递归方式实现二叉树的遍历 题目:要求用非递归和递归方式分别按照先序、中序、后序遍历二叉树;约定先序遍历顺序为:根、左、右,中序:左、中、右,后序:左、右、中。 递归方式较为简单,代码如下: public static void preOrderRecur(Node head) { if (head == null) { return...原创 2018-07-13 23:46:23 · 167 阅读 · 0 评论 -
第五章字符串问题(一)
1,判断两个字符串是否互为变形词 题目:给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。请实现判断两个字符串是否为变形词的函数。 举例:str1="123",str2="231",返回true;str1="123",s原创 2018-07-19 16:07:54 · 408 阅读 · 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 · 271 阅读 · 0 评论 -
第一章栈和队列算法
1,设计一个有getMin功能的栈,概念:在实现基本的栈的功能上,再实现返回栈中的最小元素的操作。 要求:pop、push、getMin的时间复杂度都是O(1)。设计的栈类型可以使用现成的栈结构。 思路:在设计上我们使用两个栈,一个栈用来保存当前的元素,其功能和一个正常的一样,记为stackMin。具体实现方式如下: 假设当前数据为newNum,先将其压入stackData栈,然后判断stackM...原创 2018-07-08 21:57:08 · 203 阅读 · 0 评论 -
KMP算法
kmp算法初探,左神进阶班第一课。 先理解一个字符串的最长匹配长度,前缀和最长后缀,如abcabcd,对于字符d,它的最长前缀的最长后缀的匹配长度是3,abc=abc。aaaaab,这个字符串的最长前缀和最长后缀匹配长度是4,aaaa和aaaa(第一个a开始和最后一个a往前,前缀不能包括最后一个字符,后缀不能包括第一个字符),人为规定0位置的最长匹配长度为-1,1位置人为规定为0。对于后面的每个位...原创 2018-08-15 19:40:40 · 145 阅读 · 0 评论 -
Manacher算法解析
Manacher算法是经典的算法,它的作用是给定一个字符串,返回str中最长回文字串的长度。 举例,str="123",其中的最长回文字串是"1"、"2"、"3",所以返回1。 str="abc1234321ab",其中最长的回文字串为&原创 2018-08-15 13:54:55 · 155 阅读 · 0 评论