数据结构与算法
文章平均质量分 85
liszlove
音乐、文学与编程。
展开
-
<每日一题 / 每日刷题>LeetCode题目汇总Ⅳ
文章目录3/4/20221. 子数组范围和3/4/20221. 子数组范围和 public long subArrayRanges(int[] nums) { long res = 0; for (int i = 0; i < nums.length; i++) { int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; fo原创 2022-03-04 11:11:10 · 813 阅读 · 0 评论 -
<每日一题 / 每日刷题>LeetCode题目汇总Ⅲ
<每日一题 / 每日刷题>LeetCode题目汇总Ⅰ<每日一题 / 每日刷题>LeetCode题目汇总Ⅱ三月份有拉赫玛尼诺夫陪你刷题文章目录2021-03-141.单词搜索2.全排列 II2021-03-141.单词搜索 private int m, n; public boolean exist(char[][] board, String word) { m = board.length; n = board[0].length;原创 2021-03-14 20:50:19 · 1661 阅读 · 0 评论 -
<每日一题 / 每日刷题>LeetCode题目汇总Ⅰ
今天在公司和同事聊起了算法题,首先感到惊讶的是公司里还有每天刷题的人,然后我和他交流了几道链表题的解法,感觉很愉快。我想起了我真正接触到leetcode的那一天起,就迷上了解题,每天都抽出很多时间来学习数据结构与算法并且刷题。然而,后面要准备很多面试的知识,就停止了刷题……刷题的那段时光无疑是快乐的,那时候每天都能学到很多的新知识,专心刷题,进入专注状态,没有分心于简历和面试什么的。看到同事刷了两百多道题,我突然又想重新开始刷题,至少每天一道。文章目录2020-12-161.单词规律(每日一题)原创 2020-12-16 23:08:01 · 1275 阅读 · 0 评论 -
<数据结构反转/翻转/旋转问题>LeetCode题目汇总
谈论反转/翻转/旋转问题(以下统称旋转)是很有意义的,考验对数据结构的熟悉程度。这也是面试会问到的热门问题,因为它一般会有好几种解决方法。如果之前没有思考过,那么容易在面试的时候想到好几种思路却又实现不了。一、数组1.旋转数组思路1:冒泡法很好理解,其实就是所有元素依次向后移动一位,如果是末尾元素,就移至首位。移动k轮即可。 public void rotate(int[] nums, int k) { int n = nums.length; k %= n原创 2020-11-14 16:09:42 · 757 阅读 · 0 评论 -
<LRU算法>原理及Java实现
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。Java实现:(双向链表+HashMap)import java.util.*;/** * Created on 2020/11/12 0012. * * @author lsz */public.原创 2020-11-13 16:03:48 · 210 阅读 · 0 评论 -
力扣LeetBook<数组类算法>学习笔记
本文目录原创 2020-11-08 15:24:20 · 229 阅读 · 0 评论 -
力扣LeetBook<哈希表>学习笔记
哈希表哈希表是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。本文目录一、概述二、设计哈希表1.哈希表的原理2.设计哈希表的关键3.设计哈希集合4.复杂度分析 - 哈希表三、实际应用 - 哈希集合1.哈希集 - 用法2.使用哈希集查重3.存在重复元素4.只出现一次的数字5.两个数组的交集6.快乐数四、实际应用 - 哈希映射1.哈希映射 - 用法2.场景Ⅰ - 提供更多信息3.两数之和4.同构字符串5.两个列表的最小索引总和6.场景Ⅱ - 按键聚合7.字符串中的第一个唯一字符8.两个数组的交原创 2020-11-03 15:31:50 · 608 阅读 · 0 评论 -
力扣LeetBook<二叉树>学习笔记
二叉树文章目录概述树的遍历1.二叉树的前序遍历2.二叉树的中序遍历3.二叉树的后序遍历4.二叉树的层序遍历运用递归解决问题1.二叉树的最大深度2.对称二叉树3.路径总和总结1.从中序和后序遍历序列构造二叉树2.从前序和中序遍历序列构造二叉树3.填充每个节点的下一个右侧节点指针4.填充每个节点的下一个右侧节点指针Ⅱ5.二叉树的最近公共祖先6.二叉树的序列化和反序列化概述从图的观点:树是一个拥有N个结点和N-1条边的有向无环图。二叉树:每个节点最多有两个子树。树的遍历前序:根-左-右中序:左-根原创 2020-10-30 22:24:14 · 744 阅读 · 0 评论 -
力扣LeetBook<队列&栈>学习笔记
队列 & 栈文章目录一、概述二、队列:先入先出的数据结构1.先入先出的数据结构三、队列和广度优先搜索BFS四、栈:后入先出的数据结构五、栈和深度优先搜索六、小结一、概述在数组中,可以通过索引访问随机元素。但是,在某些情况下,可能需要限制处理的顺序。这本LeetBook将介绍两种不同的处理顺序,先入先出和后入先出;以及两个相应的线性数据结构:队列和栈。我们需要:了解FIFO和LIFO处理顺序的原理实现这两个数据结构熟悉内置的队列和栈结构解决基本的队列相关问题,尤其是BFS解决基本原创 2020-10-29 15:11:06 · 861 阅读 · 1 评论 -
力扣LeetBook<链表>学习笔记
一、概述与数组类似,链表也是一种线性数据结构。下面是单链表的例子:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表有两种类型:单链表和双链表。下面是双链表的例子:二、单链表单链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。通过这种方式,单链表将所有结点按顺序组织起来。结点结构单链表中节点的典型定义:// Definition for singly-linked list.public class SinglyListNode原创 2020-10-27 09:29:27 · 1181 阅读 · 0 评论 -
力扣LeetBook<数组与字符串>学习笔记
本文目录LeetBook地址一、数组简介1、集合、列表和数组1.1、集合1.2、列表1.3、数组2、数组的操作2.1、读取元素2.2、查找元素2.3、插入元素2.4、删除元素3、例题3.1、寻找数组的中心索引3.2、搜索插入位置3.3、合并区间总结LeetBook地址数组和字符串一、数组简介1、集合、列表和数组数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。大多数面试问题都属于这个范畴。1.1、集合集合一般被定义为:由一个或多个确定的元素所构成的整体。集原创 2020-10-22 22:36:45 · 1794 阅读 · 0 评论