
算法与数据结构
文章平均质量分 95
本专栏主要介绍常见的数据结构和算法,以及在LeetCode上的刷题笔记。
斯曦巍峨
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL剖析(一):体系结构概览
STL全称是Standard Template Library,它属于泛型编程的范畴(泛型编程的代表性作品),泛型编程旨在编写独立于数据类型的代码,也就是说代码中的数据类型只有在编译的时候才会确定,否则为一个占位符。C++的STL中包含了各种常用的数据结构类模板以及操作这些数据结构的泛型算法。原创 2023-01-01 20:56:12 · 966 阅读 · 1 评论 -
STL剖析(二):容器底层数据结构及常见用法
本文主要聚焦于STL容器,下文将逐一对各个容器底层的数据结构以及常见用法进行介绍。原创 2023-01-04 11:38:25 · 1090 阅读 · 0 评论 -
白话京东周赛第三题——将 x 减到 0 的最小操作数
题目来源:5602. 将 x 减到 0 的最小操作数一.题目给你一个整数数组 numsnumsnums和一个整数 xxx 。每一次操作时,你应当移除数组 numsnumsnums 最左边或最右边的元素,然后从 xxx 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。如果可以将 xxx 恰好减到000,返回最小操作数 ;否则,返回−1-1−1 。示例 1:输入:nums = [1,1,4,2,3], x = 5输出:2解释:最佳解决方案是移除后两个元素,将 x 减到 0 。示原创 2020-11-15 17:29:55 · 833 阅读 · 0 评论 -
动态规划巧解LeetCode“解码方法”问题
题目来源: LeetCode 91.解码方法一.题目一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。原创 2020-09-20 18:51:37 · 527 阅读 · 0 评论 -
小白都能看懂的“秋叶收藏集“解法
题目来源: Leetcode LCP 19. 秋叶收藏集一.题目小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完原创 2020-09-13 20:35:41 · 1088 阅读 · 2 评论 -
滑动窗口巧解“长度最小的子数组”问题
题目来源:209. 长度最小的子数组一.题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。二.解题思路根据题目的需求,需要找到该数组中满足其和>=s>=s>=s的长度最小的连续子数组,因此可以考虑使用滑动窗口,其大致思路如原创 2020-06-28 10:04:47 · 935 阅读 · 0 评论 -
不容错过的“最小覆盖子串”解法
题目来源:Leetcode最小覆盖子串一.题目给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。二.解题思路对于这道题思路而言其实思路应该很简单,可能你的第一想法是直接暴力遍历字符串S的所有子串,然后看其中是否包含了T串中的所有字符串,然后找原创 2020-05-23 14:26:41 · 2779 阅读 · 0 评论 -
分治策略求解“数组中的逆序对”你会了吗?
题目来源:Leetcode数组中的逆序对一.题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000二.解题思路2.1.思路确定在看到题目的第一眼,我首先想到的是暴力法,直接利用一个二层循环,找到每个元素后面...原创 2020-04-24 17:03:37 · 2665 阅读 · 0 评论 -
还不会用单调栈?快到碗里来
最近,博主在Leetcode刷到了一类单调栈的题目,经过一番总结和梳理,现在来这里分享给大家,请大家有序上车,前方到站“玩转单调栈”。一.什么是单调栈?栈大家都不陌生(如果读者还未掌握,请先去了解什么是栈再来看),其特点为LIFO(后入先出),而单调栈所到底还是一种栈,只不过它比一般的栈多了一个特性:在单调栈中,从栈顶到栈底的元素是严格递增/递减,前者称为单调递增栈(简称单增栈),后者称为单调...原创 2020-04-22 20:28:52 · 1347 阅读 · 0 评论 -
清晰易懂的“K个一组翻转链表”解法
题目来源:Leetcode K个一组翻转链表题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k...原创 2020-03-26 14:30:42 · 2851 阅读 · 2 评论 -
你绝对能懂的“腐烂的橘子”解法
题目来源:腐烂的橘子一.题目在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出: 4示例...原创 2020-04-15 16:32:16 · 3122 阅读 · 0 评论