![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网算法学习
文章平均质量分 85
甜美河边的钓鱼人
田美村左岸的钓鱼人
展开
-
牛客网修炼之路6(反转单链表,反转双链表,判断链表是不是回文链表)
1、反转单链表。单链表结构如下图:反转的话,那么第一个将会变成最后一个节点。那么用一个front来记录反转子链的引用。一开始没有反转,所以,front=null然后通过p = head.next,可以找到第一个节点。很明显,然后p.next = front,很明显这一步会把p的下一步信息给覆盖掉,因为还有p后面的数据,所以这里先用一个临时节点存起来。after= p.next;所...原创 2018-10-10 23:34:43 · 328 阅读 · 0 评论 -
牛客网修炼之路5(循环打印矩阵,之字形打印矩阵,正方形逆时针旋转,在排好序的矩阵中找数)
1、这次记录下循环打印数组,一个多维数组,如下图:可以通过下面方式打印:结果为 1,4,4,2,11,1,7,7,7,5,6,9打印的时候,不要想着如果通过变换下标来做,而是通过分部分来遍历,我们可以先找出左上角的点leftTop(leftTopRow,leftTopColumn),然后找到右下角的点rightBottom(rightBottomRow,rightBottomCol...原创 2018-10-04 14:44:09 · 277 阅读 · 0 评论 -
牛客网修炼之路4(固定数组实现栈、队列,两个栈实现队列,两个队列实现栈)
1、用固定的数组实现栈的结构,具体的解析放入的代码中。package com.lizhi.java8;public class MyStack { private int[] arrs; private int index;//*************************************************** // 这是我用来测试的代码。// publ...原创 2018-09-26 23:48:09 · 99 阅读 · 0 评论 -
牛客网修炼之路3(桶排序和其中一个运用)
1、桶排序,桶排序的话,适用于一些已经知道确定边界的一些数的排序,时间复杂度,可以做到n,不过空间复杂度也是n。这里举个例子。比如,对1,3,4,2,3,9 进行排序。这里最小是1,最大是9,所以可以声明一个10长度的数组temp。初始化为0,如下图:下面的是下标,然后就可以通过遍历上面需要排的数,比如遍历到1,就直接temp[1]++,那么就会使得1的值变成了1,然后遍历3,te...原创 2018-09-26 17:33:05 · 181 阅读 · 0 评论 -
牛客网修炼之路1(插入、归并、快排的荷兰国旗问题)
1、插入排序插入排序,一开始对于一个数组,默认第一个数是已经排好顺序了,这里就会从i=1开始进行插入操作,令j = i-1=1-1=0,比较11和12的大小,11<12,也就是j+1(1)下标对应的值比j(0)下标的值要小,那么就交换。此时j--,那么j就等于-1了,比0还要小,不满足循环条件,跳出,则第一轮外层的循环就结束了。此时的数组为:那么继续第二次循环,那么j...原创 2018-09-22 11:42:42 · 236 阅读 · 0 评论 -
牛客网修炼之路2(快速排序、堆排序)
1、快速排序上述讲了荷兰国旗的问题,那么进行快速排序就简单了。怎么排呢?一个数组可以分成三个部分,小于某个数的一个部分在左边,等于这个数的部分在中间,大于这个数的部分在右边。那么假设通过递归的方式一直进行荷兰国旗问题的过程,那么结束时,快排的过程就完成了。选择某个数来划分的时候,一般来说都是选择数组的最后一个数来进行。但是如果数组一开始就是排好序的话,那么这个时候快排就会从原来的n*logn退...原创 2018-09-23 12:03:04 · 375 阅读 · 0 评论 -
牛客网修炼之路(冒泡、选择排序)
毕业这一年来,学了挺多东西的,但是学着学着,总是感觉不到进步,所以尝试学习下算法。因为不是科班出身,所以相关的课程自然没学过,所以前段时间学了下数据结构的知识,开始了(leetcode)刷题之路,但是对我来说真的好难,然后找到牛客网的视频和资料,打算啃完这个再去刷题。1、一个有序数组A,一个无序数组B,请打印出B中,A不存在的数字。 //一个有序数组A,一个无序数组B,请打印B中...原创 2018-09-17 16:17:41 · 201 阅读 · 0 评论