![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
各种经典的数据结构
跨越七海的风丶
这个作者很懒,什么都没留下…
展开
-
链表 —— 快慢指针
心血来潮...问题:求一个链表倒数第k个数的值?方法:用快慢指针。既然要求倒数第k个值,就先设两个结点,第一个结点先走k步,第二个结点在头结点处,当第一个结点走到头时,第二个结点的值就是倒数第k个数的值!结点说明:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}算法:public int kthToLast(ListNode head原创 2020-06-03 09:18:17 · 228 阅读 · 0 评论 -
Java —— 手动实现最大堆
具体实现:堆这种数据结构可以理解为二叉堆,也就是二叉树的的结构,要满足以下两个条件:1)是完全二叉树(最后一行的叶子节点的父结点总是没有右结点)2)父结点总是大于它的两个子节点动态数组保存,从下标0开始,这样索引就是:左孩子: 2*i + 1右孩子: 2*i + 2父结点:(i - 1)/2代码:1、先是类中的基础变量和一些简单的方法,主要是辅助方法public ...原创 2020-03-22 17:25:53 · 262 阅读 · 0 评论 -
数据结构 —— 二分搜索树
一、二分搜索的时间复杂度二分搜索是一种高效的数据搜索,同时也可以高效的管理数据。高效就高效在它的结构,比如要找一个树中的数据,跟根一比,看大还是小,仔细想想,是真的很省时间,所以可以推断出它的时间复杂度一般在(平衡)到O(n) (不平衡)之间,所以像Java底层源码使用的是红黑树,一种自平衡(AVL)的树,这样它的时间复杂度就是了。二、各种功能的实现因为二分搜索一般是不包含重复元素的...原创 2020-03-17 09:27:11 · 202 阅读 · 0 评论