02 2022 档案

摘要:931. 下降路径最小和(中等) 输入为一个 n * n 的二维数组 matrix,请你计算从第一行落到最后一行,经过的路径和最小为多少。 就是说你可以站在 matrix 的第一行的任意一个元素,需要下降到最后一行。 每次下降,可以向下、向左下、向右下三个方向移动一格。也就是说,可以从 matrix 阅读全文
posted @ 2022-02-28 20:19 鸭子船长 阅读(30) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 基本思想都是使用快慢指针,快指针去查找值,慢指针保存值 26. 删除有序数组中的重复项(简单) 思路: 我们让慢指针 slow 走在后面,快指针 fast 走在前面探路,找到一个不重复的元素就告诉 slow 并让 slow 前进一步。这样当 fast 指针遍历完整个数组 n 阅读全文
posted @ 2022-02-28 16:59 鸭子船长 阅读(29) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 316. 去除重复字母(中等) 题目: 思路: 题目的要求总结出来有三点: 要求一、要去重。 要求二、去重字符串中的字符顺序不能打乱 s 中字符出现的相对顺序。 要求三、在所有符合上一条要求的去重字符串中,字典序最小的作为最终结果。 比如说输入字符串 s = "babc", 阅读全文
posted @ 2022-02-28 16:29 鸭子船长 阅读(128) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 528. 按权重随机选择(中等) 题目: 思路: 对于[1,7],我们可以将其膨胀为长度为[1,7]的线段,而后产生[1,7]的int随机数x,当x落在1时返回0,当x落在2-7时返回1.实现等概率。 扩展的线段,可以用前缀和数组表示。 查找与x最接近的左侧数值时可以使用二 阅读全文
posted @ 2022-02-28 15:31 鸭子船长 阅读(58) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 380. 常数时间插入、删除和获取随机元素(中等) 题目: 题目理解: 就是说就是让我们实现如下一个类: class RandomizedSet { public: /** 如果 val 不存在集合中,则插入并返回 true,否则直接返回 false */ bool ins 阅读全文
posted @ 2022-02-28 15:06 鸭子船长 阅读(60) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 870. 优势洗牌(中等) 题目: 给你输入两个长度相等的数组 nums1 和 nums2,请你重新组织 nums1 中元素的位置,使得 nums1 的「优势」最大化。 如果 nums1[i] > nums2[i],就是说 nums1 在索引 i 上对 nums2[i] 有 阅读全文
posted @ 2022-02-28 12:53 鸭子船长 阅读(325) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 410. 分割数组的最大值(困难) 题目: 题目讲解: 给你输入一个数组 nums 和数字 m,你要把 nums 分割成 m 个子数组。 肯定有不止一种分割方法,每种分割方法都会把 nums 分成 m 个子数组,这 m 个子数组中肯定有一个和最大的子数组对吧。 我们想要找一 阅读全文
posted @ 2022-02-28 11:31 鸭子船长 阅读(57) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 代码框架 // 函数 f 是关于自变量 x 的单调函数 int f(int x) { // ... } // 主函数,在 f(x) == target 的约束下求 x 的最值 int solution(int[] nums, int target) { if (nums.l 阅读全文
posted @ 2022-02-27 23:07 鸭子船长 阅读(56) 评论(0) 推荐(0) 编辑
摘要:labuladong解法 704. 二分查找(简单) 题目: 二分查找 思路: class Solution { public: int search(vector<int>& nums, int target) { int left=0,right=nums.size()-1; while(lef 阅读全文
posted @ 2022-02-26 23:12 鸭子船长 阅读(33) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 76. 最小覆盖子串(困难) 题目: 思路: 在s中找出包含t所有字母的最小子串。 使用滑动窗口算法,在need哈希表中保存t所有字母的次数。 先扩展right,如果s[right]在need中存在,就增加window[c]次数,如果window[c]==need[c],则 阅读全文
posted @ 2022-02-26 22:13 鸭子船长 阅读(33) 评论(0) 推荐(0) 编辑
摘要:167. 两数之和 II - 输入有序数组(中等) 思路: 有序数组求两数和等于target 使用双指针从两端夹逼的方法 class Solution { public: vector<int> twoSum(vector<int>& numbers, int target) { int left= 阅读全文
posted @ 2022-02-26 20:39 鸭子船长 阅读(33) 评论(0) 推荐(0) 编辑
摘要:141. 环形链表(简单) 题目: 判定链表中是否含有环 思路: 用两个指针,一个跑得快,一个跑得慢。如果不含有环,跑得快的那个指针最终会遇到 null,说明链表不含环;如果含有环,快指针最终会超慢指针一圈,和慢指针相遇,说明链表含有环。 /** * Definition for singly-li 阅读全文
posted @ 2022-02-26 20:36 鸭子船长 阅读(52) 评论(0) 推荐(0) 编辑
摘要:labuladong 48. 旋转图像(中等) 题目: 原地将二维矩阵顺时针旋转90度 思路: 先按左上至右下对角线对折,再将每一行调转 class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix. 阅读全文
posted @ 2022-02-26 20:00 鸭子船长 阅读(40) 评论(0) 推荐(0) 编辑
摘要:讲解:labuladong 370. 区间加法(中等) 题目: 思路: 进行多次区间加减。使用差分数组,diff[n]记录num[n]-num[n-1]。这样对于区间[start,end]的加减操作只反映diff[start]+=inc,diff[end+1]-=inc。注意要判断end+1<n,如 阅读全文
posted @ 2022-02-26 19:17 鸭子船长 阅读(57) 评论(0) 推荐(0) 编辑
摘要:labuladong讲解 303. 区域和检索 - 数组不可变(中等) 题目: 思路: 用前缀和记录开始到当前位置的元素和,这里前缀和数组长度n+1,presum[n+1]代表0-n的元素和 class NumArray { public: NumArray(vector<int>& nums) { 阅读全文
posted @ 2022-02-26 18:15 鸭子船长 阅读(29) 评论(0) 推荐(0) 编辑
摘要:239. 滑动窗口最大值(困难) 题目: 给你输入一个数组 nums 和一个正整数 k,有一个大小为 k 的窗口在 nums 上从左至右滑动,请你输出每次窗口中 k 个元素的最大值。 思路: labuladong 使用单调队列。保障队列中头部最大,尾部最小。 在尾部放入元素时,将前方小于x的都从尾部 阅读全文
posted @ 2022-02-25 14:54 鸭子船长 阅读(55) 评论(0) 推荐(0) 编辑
摘要:labuladong 496. 下一个更大元素I(简单) 题目: nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 * * 给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 n 阅读全文
posted @ 2022-02-25 11:31 鸭子船长 阅读(34) 评论(0) 推荐(0) 编辑
摘要:355. 设计推特(中等) 题目: Twitter 和微博功能差不多,我们主要要实现这样几个 API: class Twitter { /** user 发表一条 tweet 动态 */ public void postTweet(int userId, int tweetId) {} /** 返回 阅读全文
posted @ 2022-02-24 20:59 鸭子船长 阅读(68) 评论(0) 推荐(0) 编辑
摘要:295. 数据流的中位数(困难) 题目: 思路: labuladong 用一个大根堆装较小的数,用小根堆装较大的数,维持两个堆的大小接近。 那么取中位数时: large.size==small.size,(large.top+small.top)/2.0 注意2.0为了获取double large> 阅读全文
posted @ 2022-02-24 19:18 鸭子船长 阅读(49) 评论(0) 推荐(0) 编辑
摘要:460. LFU 缓存机制(困难) 题目: get(key) 方法会去缓存中查询键 key,如果 key 存在,则返回 key 对应的 val,否则返回 -1。 put(key, value) 方法插入或修改缓存。如果 key 已存在,则将它对应的值改为 val;如果 key 不存在,则插入键值对  阅读全文
posted @ 2022-02-24 17:25 鸭子船长 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Dajkstra通用模板 用于两结点间最小权重和问题的解决。 Dijkstra 可以理解成一个带 dp table(或者说备忘录)的 BFS 算法,在BFS遍历所有节点的同时,记录并比较权重和。 最后输出Start结点到其他所有节点的最小路径权重和 PS:应用条件:加权有向图,没有负权重边 // 输 阅读全文
posted @ 2022-02-23 19:13 鸭子船长 阅读(123) 评论(0) 推荐(0) 编辑
摘要:277. 搜索名人(中等) 题目: 给你 n 个人的社交关系(你知道任意两个人之间是否认识),然后请你找出这些人中的「名人」。 所谓「名人」有两个条件: 1、所有其他人都认识「名人」。 2、「名人」不认识任何其他人。 在本题中,你可以使用辅助函数 bool knows(a, b) 获取到 A 是否认 阅读全文
posted @ 2022-02-23 10:57 鸭子船长 阅读(142) 评论(0) 推荐(0) 编辑
摘要:思路讲解 261. 以图判树(中等) 题目: 给定编号从 0 到 n - 1 的 n 个结点。给定一个整数 n 和一个 edges 列表,其中 edges[i] = [ai, bi] 表示图中节点 ai 和 bi 之间存在一条无向边。 如果这些边能够形成一个合法有效的树结构,则返回 true ,否则 阅读全文
posted @ 2022-02-22 22:50 鸭子船长 阅读(281) 评论(0) 推荐(0) 编辑
摘要:990. 等式方程的可满足性(中等) 题目: 给你一个数组 equations,装着若干字符串表示的算式。每个算式 equations[i] 长度都是 4,而且只有这两种情况:a==b 或者 a!=b,其中 a,b 可以是任意小写字母。你写一个算法,如果 equations 中所有算式都不会互相冲突 阅读全文
posted @ 2022-02-22 19:43 鸭子船长 阅读(28) 评论(0) 推荐(0) 编辑
摘要:130. 被围绕的区域(中等) 题目: 给你一个 M×N 的二维矩阵,其中包含字符 X 和 O,让你找到矩阵中四面被 X 围住的 O,并且把它们替换成 X。 注意哦,必须是四面被围的 O 才能被换成 X,也就是说边角上的 O 一定不会被围,进一步,与边角上的 O 相连的 O 也不会被 X 围四面,也 阅读全文
posted @ 2022-02-22 17:51 鸭子船长 阅读(48) 评论(0) 推荐(0) 编辑
摘要:二分图判断讲解 labuladong 什么是二分图: 给你一幅「图」,请你用两种颜色将图中的所有顶点着色,且使得任意一条边的两个端点的颜色都不相同,你能做到吗? 这就是图的「双色问题」,其实这个问题就等同于二分图的判定问题,如果你能够成功地将图染色,那么这幅图就是一幅二分图,反之则不是: 785. 阅读全文
posted @ 2022-02-22 11:10 鸭子船长 阅读(55) 评论(0) 推荐(0) 编辑
摘要:题解:labuladong 题目: 207. 课程表 注意,[1,0]代表前置课程0,才能学课程1 思路: 可以将其转换为有向图是否有环的问题。方向是由前置课程指向后置课程,以此来构建有向图。在递归遍历有向图的过程中,通过visited来进行剪枝,即访问过的结点不再访问。通过onPath来记录走过的 阅读全文
posted @ 2022-02-17 16:01 鸭子船长 阅读(45) 评论(0) 推荐(0) 编辑
摘要:797. 所有可能的路径(中等) 图的递归遍历 题目: 题目输入一幅有向无环图,这个图包含n个节点,标号为0, 1, 2,..., n - 1,请你计算所有从节点0到节点n - 1的路径。 输入的这个graph其实就是「邻接表」表示的一幅图,graph[i]存储这节点i的所有邻居节点。 比如输入gr 阅读全文
posted @ 2022-02-16 16:23 鸭子船长 阅读(43) 评论(0) 推荐(0) 编辑
摘要:思路: 递归 迭代 迭代框架: // 模拟函数调用栈 private Stack<TreeNode> stk = new Stack<>(); // 左侧树枝一撸到底 private void pushLeftBranch(TreeNode p) { while (p != null) { /*** 阅读全文
posted @ 2022-02-16 11:56 鸭子船长 阅读(32) 评论(0) 推荐(0) 编辑
摘要:在编译时,添加-DWITH_TESTING=ON,将单测编入whl包中 安装whl包 ctest -N | grep test_range 查找是否包含对应单测 ctest -R test_range -V 运行单测 阅读全文
posted @ 2022-02-15 16:11 鸭子船长 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 * * 完全二叉树 * 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h * 层,则该层包含 1~ 2^h 个节点。 思路: 阅读全文
posted @ 2022-02-15 11:34 鸭子船长 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目: 首先,现在有一种数据结构 NestedInteger,这个结构中存的数据可能是一个 Integer 整数,也可能是一个 NestedInteger 列表。注意,这个列表里面装着的是 NestedInteger,也就是说这个列表中的每一个元素可能是个整数,可能又是个列表,这样无限递归嵌套下去… 阅读全文
posted @ 2022-02-14 17:03 鸭子船长 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目: 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 * * 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / * 反序列化算法执行逻辑,你只需要保证 阅读全文
posted @ 2022-02-14 11:26 鸭子船长 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1373. 二叉搜索子树的最大键值和(困难) 思路:labuladong 题目: 给你一棵以 root 为根的 二叉树 ,请你返回 任意 二叉搜索子树的最大键值和。 * * 二叉搜索树的定义如下: * 任意节点的左子树中的键值都 小于 此节点的键值。 * 任意节点的右子树中的键值都 大于 此节点的键 阅读全文
posted @ 2022-02-10 17:28 鸭子船长 阅读(63) 评论(0) 推荐(0) 编辑
摘要:思路:labuladong 96. 不同的二叉搜索树(简单) 题目:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: * 输入:n = 3 * 输出:5 * 示例 2: * 输入:n = 1 * 输出:1 阅读全文
posted @ 2022-02-10 16:44 鸭子船长 阅读(45) 评论(0) 推荐(0) 编辑
摘要:思路:labuladong 基本框架 void BST(TreeNode root, int target) { if (root.val == target) // 找到目标,做点什么 if (root.val < target) BST(root.right, target); if (root 阅读全文
posted @ 2022-02-10 15:47 鸭子船长 阅读(29) 评论(0) 推荐(0) 编辑
摘要:思路:labuladong 二叉搜索树中序遍历为有序数组,利用该特性进行中序遍历,并在遍历时记录rank值,当rank等于k时输出val class Solution { public: int kthSmallest(TreeNode* root, int k) { traverse(root,k 阅读全文
posted @ 2022-02-09 15:06 鸭子船长 阅读(46) 评论(0) 推荐(0) 编辑
摘要:寻找重复的子树 - 力扣(LeetCode)​leetcode-cn.com/problems/find-duplicate-subtrees/description/ 题目描述: 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具 阅读全文
posted @ 2022-02-08 19:47 鸭子船长 阅读(57) 评论(0) 推荐(0) 编辑
摘要:* 返回与给定的前序和后序遍历匹配的任何二叉树。 * * pre 和 post 遍历中的值是不同的正整数。 * 示例: * * 输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1] * 输出:[1,2,3,4,5,6,7] * 提示: * * * 1 <= 阅读全文
posted @ 2022-02-08 19:31 鸭子船长 阅读(34) 评论(0) 推荐(0) 编辑
摘要:输入:n——点的个数,a:double的点的角度。 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <iostream> 4 #include <vector> 5 #include <array> 6 #include <list> 7 阅读全文
posted @ 2022-02-08 17:16 鸭子船长 阅读(107) 评论(0) 推荐(0) 编辑
摘要:* [543] 二叉树的直径 * * https://leetcode-cn.com/problems/diameter-of-binary-tree/description/ * * algorithms * Easy (55.94%) * Likes: 902 * Dislikes: 0 * T 阅读全文
posted @ 2022-02-08 17:09 鸭子船长 阅读(39) 评论(0) 推荐(0) 编辑
摘要:* 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 * * 如果有两个中间结点,则返回第二个中间结点。 * * * * 示例 1: * * * 输入:[1,2,3,4,5] * 输出:此列表中的结点 3 (序列化形式:[3,4,5]) * 返回的结点值为 3 。 (测评系统对该结点序 阅读全文
posted @ 2022-02-07 17:13 鸭子船长 阅读(26) 评论(0) 推荐(0) 编辑
摘要:本文为按照labuladong算法小结 自行学习的总结。意为记录自己学习练习的顺序,用于日后回顾浏览。目录中附上各章labuladong的原文链接,并会附上自我练习的代码及理解。 1、数据结构 1.1、链表 1.1.1、单链表的六大解题套路 1、合并两个有序链表:Leetcode 21.合并两个有序 阅读全文
posted @ 2022-02-07 15:51 鸭子船长 阅读(99) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示