![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构# JAVA
Hydra.
天空没有留下我的痕迹,但我已飞过!无人观我博客,但我已写过!
展开
-
Java--排序算法
目录各种排序算法效率1.插入排序2.选择排序3.冒泡排序4.快速排序5.希尔排序6.折半插入排序7.归并排序8.二叉树排序*************************************华丽的分割线*********************************************9.基数排序10.堆排序各种排序算法效率...原创 2019-08-14 19:43:09 · 270 阅读 · 0 评论 -
递归
递归 方法调用自己本身,叫递归三个要素边界条件 递归前进段 递归返回段例1:在有序序列(比如有序数组)中,将查找的值跟数组的中间元素的值比较,如果查找值大于数组中间的元素,则继续到后半部分的范围查找,如果查找值小于数组中间的元素,则继续到前半部分的范围查找,如果等于,则返回该元素。以此类推。 public static int binSearch(int[] a...原创 2019-09-02 18:45:39 · 258 阅读 · 0 评论 -
二叉树——通过先序、中序序列输出后序序列
题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路通过先序序列确定根,通过中序序列确定左右子树,然后一直递归就可以了。实现代码package cn.datastruct.tree...原创 2019-09-01 13:52:30 · 1980 阅读 · 0 评论 -
树——二叉树的概念及构造(Java实现)
树先普及一下树的概念 树的定义 树是由n(n>=0)个结点点组成的有限集合。若n=0,称为空树;若n>0,则 (1)有一个特定的称为根(root)的结点,他只有后继,没有前驱; (2)除根结点以外的其他结点可以划分为m(m>=0)个互不相关的集合T0、T1、...Tm-1,每个集合Ti又是一颗树,称为根的子树, 每颗子树的结点有且只有直接前驱,但可以有一...原创 2019-09-01 10:32:28 · 797 阅读 · 0 评论 -
数据结构——双向链表(Java实现)
链表的节点一个链表的节点(Node)分为两部分,第一部data分保存节点本身的数据,第二部分存储下一个节点地址。最后一个节点存储的下一个节点的地址为空。单向链表,只提供从链表头插入节点。使用内部类构造节点 private class Node{//使用内部类构造节点 private Object val;//节点数据 private Node next;//节点指针,指向...原创 2019-08-30 20:25:43 · 446 阅读 · 0 评论 -
数据结构——双向队列(Java实现)
队列的概念队列(Queue)是特殊的线性表,先进先出FIFO,只允许在队列的前端(front)进行删除操作,而在队列的尾部(rear)进行插入操作,没有元素时,称为空队列。队列可以分为:单向队列(Queue)只允许在一端插入数据,另一端删除数据。与栈不同的地方,队列内部的数据不总是从数组的下标0开始的,因为在移除队列头的元素后,队头的指针会往较高的数组的索引的位置。实现队列需要实...原创 2019-08-30 19:59:26 · 2137 阅读 · 1 评论 -
Java --链表基本操作
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/** * Definition for singly-link...原创 2019-08-16 19:07:26 · 229 阅读 · 0 评论 -
Java--数组模拟栈,实现括号匹配
栈的特点就是先进后出(FILO)。数组加一个一直指向栈顶的指针,很好实现。构造栈import java.util.Arrays;public class StackDemo<E> { private static final int DEFAULT_CAPACITY = 10;//默认容量 private Object[] arr;//存储栈元素的数组 priv...原创 2019-08-30 08:44:32 · 422 阅读 · 0 评论 -
leetcode--算法数组专题
简单题给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]...原创 2019-08-29 21:22:29 · 273 阅读 · 0 评论 -
原地算法
百度的解释: 在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部份覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。简单来说,就是在不新建大量额外空间(就是固定空间,无论数据多大,都不改变的那种)的基础上对原数据...原创 2019-08-16 10:08:22 · 6052 阅读 · 0 评论 -
滑动窗口算法
LeetCode上的一道题,一开始没看懂,最后才知道是窗口滑动算法。你的好友是一位健身爱好者。前段日子,他给自己制定了一份健身计划。现在想请你帮他评估一下这份计划是否合理。他会有一份计划消耗的卡路里表,其中 calories[i] 给出了你的这位好友在第 i 天需要消耗的卡路里总量。为了更好地评估这份计划,对于卡路里表中的每一天,你都需要计算他 「这一天以及之后的连续几天」 (共 k...原创 2019-09-03 19:51:50 · 1855 阅读 · 0 评论