
算法
Jocker_coding
2019努力奋斗。
展开
-
(全)数据结构各种排序的总结(Java实现)
数据结构各种排序的总结(Java实现)今天整理了一下数据结构课上所学的各种排序,先写一下今天刚敲完的代码(都只写了升序),还剩下基数排序和桶排序明天更。文章目录数据结构各种排序的总结(Java实现)1.冒泡排序及其优化2.插入排序1.冒泡排序及其优化思想:冒泡排序是将数组中相邻的两个元素不断比较,第一个比第二个大就交换,因此会将较大的数一直换到最后,然后再缩小比较范围,直至为1排序完成。优...原创 2019-01-04 14:11:27 · 937 阅读 · 0 评论 -
正方形矩阵的旋转原理以及代码
正方形矩阵的旋转原理以及代码正方形矩阵的旋转的思路就是从最外层开始一层一层各个元素转换到转换后应该有的位置,直至打印结束。这里以顺时针九十度的矩阵旋转为例的话,首先是四个顶点之间的旋转,可以找出其中的坐标规律,其他的点也遵守这个规律,再一层一层将每个点旋转到相应位置即可。下面直接贴出代码。才疏学浅,若有错误欢迎大家多多指出,一定虚心接受。package Main;/** * @auth...原创 2019-01-27 18:46:44 · 1454 阅读 · 0 评论 -
矩阵打印之转圈打印、之字形打印
矩阵打印之转圈打印、之字形打印矩阵打印也是经常会使用到的要求掌握的算法,在此介绍一下转圈打印和之字形打印的方法。因为并不复杂直接看代码就可以看懂,也写了注释,所以直接贴上代码。才疏学浅,若有错误欢迎大家多多指出,一定虚心接受。文章目录矩阵打印之转圈打印、之字形打印转圈打印之字形打印转圈打印package Main;/** * @author Leslie * */public ...原创 2019-01-27 17:55:55 · 318 阅读 · 0 评论 -
最大值减去最小值小于等于num的子数组数量
最大值减去最小值小于等于num的子数组数量给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况:max(arr[i…j]) - min(arr[i…j]) <= nummax(arr[i…j])表示子数组 arr[i…j]中的最大值,min(arr[i…j])表示子数组 arr[i…j]中的最 小值。如果数组长度为 N,请实现时间复杂度为 O(N)的解法。这道题类似于...原创 2019-02-01 13:59:52 · 373 阅读 · 0 评论 -
求最大子矩阵的大小
求最大子矩阵的大小给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出: 6思路1.以矩阵的每一行做分割,统计以当前行作为底的情况下,每个列位置往...原创 2019-02-01 12:56:24 · 804 阅读 · 0 评论 -
构造数组的MaxTree
构造数组的MaxTree给定一个数组,数组的MaxTree定义如下:1.数组必须没有重复元素2.MaxTree是一个二叉树,数组的每一个值对应一个二叉树节点3.MaxTree及其子树,值最大的节点都是数的根节点文章目录构造数组的MaxTree思路代码思路经过分析可以得到两个原则:1.每个节点的父节点是它左边第一个比它大的数和它右边第一个比它大的数中,较小的那个2.如果一个数左右两...原创 2019-02-01 11:33:26 · 446 阅读 · 0 评论 -
【LeetCode】239滑动窗口最大值
滑动窗口最大值给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1]...原创 2019-01-31 23:37:36 · 275 阅读 · 0 评论 -
汉诺塔问题(递归与非递归)
汉诺塔问题文章目录汉诺塔问题基本介绍递归方法非递归方法基本介绍汉诺塔是由三根杆子A,B,C组成的。A杆上有N个(N&gt;1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?最少要移动多少次?在这里把规则加强一下,A和C之间...原创 2019-01-31 22:26:01 · 698 阅读 · 0 评论 -
前缀树的介绍与源码
前缀树的介绍与源码前缀数是经常用到的一种数据结构。主要思路是用边来记录数据,用点来记录有多少字符串经过某条边以及把某条边作为结尾。主要用于查找一个结构中有多少以某个字符开头的结果,或者某一个字符出现了几次。下面直接上代码。package Main;/** * @author Leslie * */public class Main { public static class...原创 2019-01-26 23:27:50 · 439 阅读 · 0 评论 -
用一个栈实现另一个栈的排序
用一个栈实现另一个栈的排序如果给出一个栈,要求仅使用另一个栈来实现这个栈的从顶到底从大到小的排序。文章目录用一个栈实现另一个栈的排序原思路简化版本测试函数原思路原思路如下:构造另一个栈help,将原本栈中的元素依次弹出,如果所弹出的元素小于等于help的栈顶元素或者help栈为空,则直接入栈,如果大于help的栈顶元素则将help栈中的元素依次弹出到原栈中,直至help栈顶元素大于等于所弹...原创 2019-01-31 15:13:03 · 331 阅读 · 0 评论 -
如何使用递归函数逆序一个栈
如何使用递归函数逆序一个栈文章目录如何使用递归函数逆序一个栈递归函数1递归函数2测试函数递归函数1首先,我们需要设计一个能够将栈中的栈底元素返回并移除的递归函数,使用这个函数我们就可以获取到栈底元素并且其他栈中的顺序不变。代码如下: public static int getAndRemoveLastElement(Stack<Integer> stack) { int r...原创 2019-01-31 14:19:13 · 352 阅读 · 3 评论 -
如何用栈实现队列功能以及如何用队列实现栈功能
如何用栈实现队列功能以及如何用队列实现栈功能首先,我们要明确什么是栈和队列。栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特性:后进先出。队列是一种先进先出的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。文章目录如何用栈实现队列功能以及如何用队列实现栈功能栈实...原创 2019-01-26 11:38:24 · 2326 阅读 · 0 评论 -
并查集的Java实现(使用HashMap)
浅析并查集的使用(Java实现)文章目录浅析并查集的使用(Java实现)并查集的定义:并查集的功能:并查集的Java实现:并查集的定义:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量...原创 2019-01-07 09:37:19 · 1445 阅读 · 7 评论 -
(全)二叉树的遍历方法总结(最简单好记的非递归,常规非递归,递归共10种)
10种二叉树的遍历方法今天敲了一下数据结构课上学的二叉树的遍历方法,又在网上看了一些大牛们写的好方法,在这里做一个小小的总结。才疏学浅,若有错误欢迎大家多多指出,一定虚心接受。文章目录10种二叉树的遍历方法一、递归遍历1.先序遍历2.中序遍历3.后序遍历二、统一简单好记的非递归遍历1.先序遍历2.中序遍历3.后序遍历三、常规的非递归遍历1.先序遍历2.中序遍历3.后序遍历(双栈实现)4.后序遍...原创 2019-01-06 11:13:28 · 702 阅读 · 1 评论 -
如何验证自己代码的正确性?
很多时候,我们写的代码虽然能够通过我们自己手动输入的样例,但是这段代码的正确性还是有待考究的。比如,当你在一些Online Judge的网站上敲题时,可能写的解决办法能够完美解决样例给出的输入,并给出正确输出,但是提交之后还是会wa。有时候可能是因为没有考虑边界问题,有时候可能是贪心算法有问题。这时候就应该模拟一下大数据量的输入来验证一下自己代码的正确性。思路如下:(拿简单的冒泡排序为例)文章目...原创 2019-01-05 21:24:22 · 5502 阅读 · 1 评论 -
二叉树的Morris遍历
二叉树的Morris遍历之前总结过二叉树的经典遍历算法,包括递归和常规非递归算法,其时间复杂度和空间复杂度均为O(n)。Morris算法巧妙地利用了二叉树的线索化思路,把叶节点的空指针利用起来,将二叉树的遍历算法的空间复杂度降低为O(1),时间复杂度仍然为O(n)。主要思路:找到每个节点的左子树的最右节点,让它指向本节点。在遍历之后恢复节点的空指针。文章目录二叉树的Morris遍历前序遍历中...原创 2019-03-13 11:08:55 · 468 阅读 · 0 评论