数据结构
英雄之旅——hyc
代码手艺人
展开
-
力扣155.最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() ——检索栈中的最小元素。示例:输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出: [null,null,null,null,-3.原创 2020-09-16 21:12:26 · 123 阅读 · 0 评论 -
用栈实现浏览器的前进后退功能
思路:栈是一种先进后出数据结构,可以利用其特性,制造两个栈,一个保存前进的网页地址,一个保存后退的网页地址,在用一个参数保存当前网页地址。后退两步前进一步Talk is cheap show me the codepublic class BrowserStack { static String[] url={"http://www.baidu.com","https://m...原创 2019-10-15 16:26:36 · 389 阅读 · 0 评论 -
用数组和链表实现顺序栈和链式栈
基于数据的顺序栈public class ArrayStack<T> { private T[] data; private int n; private int count; public ArrayStack(int n){ this.data= (T[]) new Object[n]; this.n=n; ...原创 2019-10-14 15:33:23 · 136 阅读 · 0 评论 -
数据结构链表
数组是一块连续的内存空间来存储数据的数据结构,它队内存的要求比较高。如果我们申请一个100MB大小的数据,当内存没有连续的、足够大的存储空间时,即便内存的剩余总空间大于100MB,仍然会申请失败。而链表恰恰相反,他并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是100MB大小的链表,根本不会有问题最常见的三种数据结构:单链表、双向链表、循环链表...翻译 2019-07-07 19:22:55 · 88 阅读 · 0 评论 -
栈
栈是一种后进者先出,先进者后出的数据结构。可以理解成一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依此取。栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,叫做顺序栈,用链表实现的栈,叫链式栈。//基于数据实现的顺序栈public class StackBaseArra...翻译 2019-07-17 19:23:40 · 120 阅读 · 0 评论 -
二分查找
二分查找二分查找是一种非常简单易懂的快速查找算法,二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。O(logn)惊人的查找速度二分查找每一次操作都会减少一半的数据,比如2的三十二次方是四十多亿,即便四十多亿条数据用二分查找只需要三十二次就行了。//非递归代码实现pub...翻译 2019-07-26 20:00:22 · 121 阅读 · 0 评论 -
队列
队列队列和栈一样都是受限的数据结构,栈是先进后出,而队列就像排队一样,先来的先走,也就是先进先出。队列的入队方法enqueue(),出队方法dequeue()基于数组的实现的队列叫做顺序队列,用链表实现的队列叫作链式队列// 用数组实现的队列public class ArrayQueue { // 数组:items,数组大小:n private String[] items;...翻译 2019-07-26 20:09:37 · 120 阅读 · 0 评论