labuladong专题

[labuladong算法小抄]二分查找详解

本文转自labuladong的算法小抄 , 代码部分我使用go重新描述 先给大家讲个笑话乐呵一下: 有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿东正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?于是保安把书分成两堆,让第一堆过一下报警器,报警器响;于是再把这堆书分成两堆…… 最

力扣labuladong一刷day67天回溯大集合

力扣labuladong一刷day67天回溯大集合 文章目录 力扣labuladong一刷day67天回溯大集合一、93. 复原 IP 地址二、78. 子集三、90. 子集 II 一、93. 复原 IP 地址 题目链接:https://leetcode.cn/problems/restore-ip-addresses/description/ 思路:分割字符串和排序数字其实

力扣labuladong一刷day63天单词拆分

力扣labuladong一刷day63天单词拆分 文章目录 力扣labuladong一刷day63天单词拆分一、139. 单词拆分二、140. 单词拆分 II 一、139. 单词拆分 题目链接:https://leetcode.cn/problems/word-break/description/ 思路:s是否能被拆分成字典中的单词,单词数量是不限的,故是完全背包问题,不限

力扣labuladong——一刷day94

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言`二叉堆(Binary Heap)没什么神秘,性质比二叉搜索树 BST 还简单。其主要操作就两个,sink(下沉)和 swim(上浮),用以维护二叉堆的性质。其主要应用有两个,首先是一种排序方法「堆排序」,第二是一种很有用的数据结构「优先级队列」` 一、二叉堆 前言 二叉堆(Binary

力扣labuladong——一刷day93

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣295. 数据流的中位数 前言 在数据流中计算平均数 一、力扣295. 数据流的中位数 class MedianFinder {private PriorityQueue<Integer> small;private PriorityQueue<Integer> large

力扣labuladong一刷day59天动态规划

力扣labuladong一刷day59天动态规划 文章目录 力扣labuladong一刷day59天动态规划一、509. 斐波那契数二、322. 零钱兑换 一、509. 斐波那契数 题目链接:https://leetcode.cn/problems/fibonacci-number/description/ 思路:这是非常典型的一道题,下面是优化过的代码,a,b就是dp数组

力扣labuladong——一刷day90

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Trie树实现 前言 Trie 树又叫字典树、前缀树、单词查找树,是一种二叉树衍生出来的高级数据结构,主要应用场景是处理字符串前缀相关的操作 一、Trie树实现 public class TrieMap<V> {//ASCII码个数private static final in

二分查找-labuladong

https://www.cnblogs.com/labuladong/p/12320448.html

力扣labuladong一刷day51天单调栈应用

力扣labuladong一刷day51天单调栈应用 一、239. 滑动窗口最大值 题目链接:https://leetcode.cn/problems/sliding-window-maximum/ 思路:滑动窗口最大值,既要维护加入的时间顺序,又要 class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int[]

labuladong日常刷题-差分数组 | LeetCode 1109航班预定统计 | 花式遍历 151反转字符串里的单词

差分数组–前缀和数组的升级 LeetCode 1109 航班预定统计 2024.1.1 题目链接labuladong讲解[链接] class Solution {public:vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {//构建航班人数数组,数组大小为n,初始化为0vector<int> pe

力扣labuladong一刷day49天迪杰斯特拉

力扣labuladong一刷day49天迪杰斯特拉 文章目录 力扣labuladong一刷day49天迪杰斯特拉一、743. 网络延迟时间二、1631. 最小体力消耗路径三、1514. 概率最大的路径 一、743. 网络延迟时间 题目链接:https://leetcode.cn/problems/network-delay-time/ 使用迪杰斯特拉解决加权图某点到所有节点

力扣labuladong一刷day46天并查集

力扣labuladong一刷day46天并查集 文章目录 力扣labuladong一刷day46天并查集一、323. 无向图中连通分量的数目二、130. 被围绕的区域三、990. 等式方程的可满足性 一、323. 无向图中连通分量的数目 题目链接:https://leetcode.cn/problems/number-of-connected-components-in-a

力扣labuladong——一刷day79

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣785. 判断二分图二、力扣886. 可能的二分法 前言 给你一幅「图」,请你用两种颜色将图中的所有顶点着色,且使得任意一条边的两个端点的颜色都不相同,你能做到吗? 这就是图的「双色问题」,其实这个问题就等同于二分图的判定问题,如果你能够成功地将图染色,那么这幅图就是一幅二分图

力扣labuladong——一刷day77

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣207. 课程表 前言 图这种数据结构有一些比较特殊的算法,比如二分图判断,有环图无环图的判断,拓扑排序,以及最经典的最小生成树,单源最短路径问题,更难的就是类似网络流这样的问题。 不过以我的经验呢,像网络流这种问题,你又不是打竞赛的,没时间的话就 一、力扣207. 课程表

力扣labuladong——一刷day77

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣207. 课程表 前言 图这种数据结构有一些比较特殊的算法,比如二分图判断,有环图无环图的判断,拓扑排序,以及最经典的最小生成树,单源最短路径问题,更难的就是类似网络流这样的问题。 不过以我的经验呢,像网络流这种问题,你又不是打竞赛的,没时间的话就 一、力扣207. 课程表

力扣labuladong——一刷day76

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣797. 所有可能的路径二、力扣277.搜寻名人 前言 图这种数据结构有一些比较特殊的算法,比如二分图判断,有环图无环图的判断,拓扑排序,以及最经典的最小生成树,单源最短路径问题,更难的就是类似网络流这样的问题。 一、力扣797. 所有可能的路径 class Solutio

力扣labuladong一刷day43天名人问题

力扣labuladong一刷day43天名人问题 一、277. 搜寻名人 题目链接:https://leetcode.cn/problems/find-the-celebrity/ 思路:无不认识其他人,其他人都认识我,这就是名人,想o(n),可以从头开始两人两个人的排除一个,所有人为一个list,每次开头的两个,如果a一定不是名人就把b加进去,否则就把b保留,这样只需要O(n)就排除的只剩下

力扣labuladong——一刷day75

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣200. 岛屿数量(广搜)二、力扣200. 岛屿数量(深搜) 前言 图论,深搜还有广搜都只是手段 一、力扣200. 岛屿数量(广搜) class Solution {int[][] arr = new int[][]{{0,1},{0,-1},{1,0},{-1,0}};b

力扣labuladong——一刷day75

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣200. 岛屿数量(广搜)二、力扣200. 岛屿数量(深搜) 前言 图论,深搜还有广搜都只是手段 一、力扣200. 岛屿数量(广搜) class Solution {int[][] arr = new int[][]{{0,1},{0,-1},{1,0},{-1,0}};b

力扣labuladong——一刷day74

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣1305. 两棵二叉搜索树中的所有元素二、力扣872. 叶子相似的树 前言 二叉树的构造算法通用思路很简单,无非就是构造根节点,然后递归构造左右子树,最后把它们接起来,关键在于如何找到根节点和左右子树的节点,不同的序列化方法,找根节点的方式也不同 一、力扣1305. 两棵二叉

力扣labuladong——一刷day71

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣1008. 前序遍历构造二叉搜索树二、力扣108. 将有序数组转换为二叉搜索树 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式,这道题需要用到「分解问题」的思维模式。 一、力扣1008. 前序遍历构造二叉搜索树 /*** Definition for a bina

力扣labuladong一刷day35天

力扣labuladong一刷day35天 文章目录 力扣labuladong一刷day35天一、98. 验证二叉搜索树二、700. 二叉搜索树中的搜索三、701. 二叉搜索树中的插入操作四、450. 删除二叉搜索树中的节点 一、98. 验证二叉搜索树 题目链接:https://leetcode.cn/problems/validate-binary-search-tree/

力扣labuladong一刷day34天

力扣labuladong一刷day34天 文章目录 力扣labuladong一刷day34天一、230. 二叉搜索树中第K小的元素二、538. 把二叉搜索树转换为累加树 一、230. 二叉搜索树中第K小的元素 题目链接:https://leetcode.cn/problems/kth-smallest-element-in-a-bst/?utm_source=LCUS&ut

力扣labuladong——一刷day69

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣669. 修剪二叉搜索树二、力扣671. 二叉树中第二小的节点 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式,这道题需要用到「遍历」的思维模式。 一、力扣669. 修剪二叉搜索树 /*** Definition for a binary tree node.*

力扣labuladong一刷day32天二叉树

力扣labuladong一刷day32天二叉树 一、297. 二叉树的序列化与反序列化 题目链接:https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/ 思路:关于序列化与反序列化,题目不要求序列化的方式,只要求树经过序列化和反序列化之后依然一样,如果序列化的过程中记录了空节点则只通过前序或者后序就可以完整记录二叉

力扣labuladong一刷day30天二叉树

力扣labuladong一刷day30天二叉树 文章目录 力扣labuladong一刷day30天二叉树一、654. 最大二叉树二、105. 从前序与中序遍历序列构造二叉树三、106. 从中序与后序遍历序列构造二叉树四、889. 根据前序和后序遍历构造二叉树 一、654. 最大二叉树 题目链接:https://leetcode.cn/problems/maximum-bin