数据结构与算法
文章平均质量分 83
蛙广志
定位抖音直播 server,有需要可以私聊内推
展开
-
算符优先分析程序设计实验【Java版】
一、实验目的根据算符优先分析法,对表达式进行语法分析,使其能够判断一个表达式是否正确。通过算符优先分析方法的实现,加深对自下而上语法分析方法的理解。二、大致思路构建FirstVT级和LastVT集构建算符优先表进行表达式正确性分析三、伪代码构建构建FirstVT集/*求 FirstVT 集的算法*/ PROCEDURE insert(P,a); IF not F[P,a] then begin F[P,a] = true; //(P,a)进栈 end原创 2021-11-28 14:37:44 · 1594 阅读 · 0 评论 -
【redis深入学习】还在说人人皆知的五大数据结构?来看看底层是如何实现的,绝对够硬核
说到redis,五大数据结构几乎是人人皆知的东西了,这是redis区别memcached的重要特征,那么redis底层是如何实现这五大数据结构的呢?这里面大有学问,且随博主,一探究竟,绝对值得你收藏慢慢看壹:首先我们先明白几个前置知识1.redis中所有的底层的主要的数据结构简单动态字符串SDS、双端链表、字典、压缩列表、整数集合等等2.redis使用对象存储键值对我们要明白Redis中无论是key还是value都是使用对象来存储,每当我们在Redis的数据库添加一个键值对时,底层至少会创建两个原创 2021-05-31 12:26:39 · 313 阅读 · 18 评论 -
【集合-HashMap】HashMap中sizeForTable,hash()算法中的位运算
HashMap中位运算的运用可以说是神乎其神,也很难理解,接下来让我带你理解以下三种位操作,作者不做标题党,图文并茂你一定能看懂,欢迎交流学习Hash中的位运算- `tableSizeFor()`方法,根据传入容量返回一个`>=cap`的最小二的整数次幂的数- 取模运算`(n - 1) & hash`- Hash()算法中的位运算- tableSizeFor()方法,根据传入容量返回一个>=cap的最小二的整数次幂的数static final int tableSizeFor(in原创 2021-04-02 23:01:57 · 252 阅读 · 1 评论 -
【集合】源码级深入理解LinkedList,点开即食
在讲LinkedList之前,建议先对ArrayList有一个较为深入的理解,这样两者对比之下,就能找到更适合生产环境中的容器类型可以阅读博主的另一边文章,带你全面了解ArrayList,从扩容机制,常见方法,到fail-fast以及并发情况下的问题都有深入分析:深入理解ArrayList由ArrayList引发的思考由于ArrayList底层是由数组存储的,优点很明显:连续存储空间可以由角标在o(1)的时间复杂度内完成缺点:1.对于元素的增删操作最差达到o(n)2.并且存在不断扩容的问题,时间原创 2021-04-01 09:39:20 · 2110 阅读 · 4 评论 -
【Leetcode】只出现一次的数字(异或中的骚操作)
异或中的骚操作今日刷LeetCode发现了只出现一次的数字的系列题,并且深深领会到异或中的骚操作,接下来介绍一些说完让你眼前一亮的操作首先异或的基础介绍什么是异或操作,简单来说就是相同为0,不同为1,更好记忆的方法是不进位+运算,举个简单的栗子:6^7=1所以不难得到:0^N=N,N^N=0异或操作是满足结合律和交换律的,即多个数即异或结果和顺序无关不需要额外空间的互换值maybe交换两个数的值是我们最开始接触过的代码,很简单,用一个额外变量 int a = 1,b = 2,temp;原创 2021-03-20 10:19:36 · 266 阅读 · 6 评论 -
最小栈问题
title: 最小栈问题categories: 数据结构与算法最小栈的问题首先明确定义:什么是最小栈?就是栈中有一个getMin()方法可以常数复杂度的获取栈中的最小值,所以暴力遍历栈获取最小值是十分不明智的,所以我们会采用一个辅助栈,来帮助我们获取最小值。通常有两种方案,和主栈同步,和主栈不同步。和主栈同步:就是指主栈和辅助栈一定会增加元素import java.util.Stack;public class MinStack { // 数据栈 private Sta.原创 2020-08-30 12:07:29 · 228 阅读 · 0 评论