
数据结构
MD_
不拼一下 你怎么知道你不会成功!
展开
-
Leetcode 692. 前K个高频单词【重载比较运算符】
文章目录问题描述解题报告实现代码参考资料问题描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [原创 2020-08-07 16:14:59 · 348 阅读 · 3 评论 -
Leetcode 1481. 不同整数的最少数目
文章目录问题描述解题报告实现代码参考资料问题描述给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。示例 1:输入:arr = [5,5,4], k = 1输出:1解释:移除 1 个 4 ,数组中只剩下 5 一种整数。解题报告问题的关键是对 unordered_map 按照 value 进行排序。方法是将 unordered_map 的 key 和 value 作为 pair 放到 vector 中,然后定义 pair原创 2020-06-19 19:57:51 · 296 阅读 · 0 评论 -
Leetcode 215. 数组中的第K个最大元素【优先队列】
文章目录问题描述解题报告实现代码参考资料问题描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5解题报告priority_queue<int,vector<int>, greater<int>>pq; 元素从小到大顺序出队的优先队列priority_queue<int> q; 元素从大到小顺序出队的原创 2020-06-14 19:11:53 · 271 阅读 · 0 评论 -
Leetcode 面试题31. 栈的压入、弹出序列【栈相关】
文章目录问题描述解题报告实现代码参考资料问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1),原创 2020-06-04 14:02:37 · 172 阅读 · 0 评论 -
Leetcode 394. 字符串解码
文章目录问题描述解题报告实现代码参考资料问题描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = “3[a]2[bc]”, 返回 “a原创 2020-05-31 14:23:54 · 138 阅读 · 0 评论 -
哈希表优化系列【空间换时间】-Leetcode 560.和为 K 的子数组
文章目录问题描述解题报告实现代码参考资料问题描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。解题报告从暴力的角度出发,确定起点和终点,可以求出任意区间的和。但每次从起点做加法到终点会存在很多原创 2020-05-15 13:48:30 · 269 阅读 · 0 评论 -
Leetcode 面试题49.丑数【优先队列|动态规划】
文章目录问题描述解题报告优先队列动态规划实现代码优先队列动态规划参考资料问题描述我们把只包含质因子2、3和5的数称为丑数。求按从小到大的顺序的第n个丑数。解题报告由于丑数 只 包含质因子2,3,5,因此较大的丑数可以由较小的丑数依次乘以上述质因子得到。优先队列同时构建一个优先队列和集合。每次从队列中取出一个最小的数,将这个数依次乘以三个因子,然后判断三个新得的三个数是否在集合中,如果...原创 2020-04-08 12:34:12 · 176 阅读 · 0 评论 -
Leetcode 面试题13.机器人的运动范围【简单的搜索 BFS or DFS】
文章目录问题描述解题报告实现代码参考资料问题描述地上有一个m行n列的方格,从坐标[0,0]到坐标[m-1,n-1]。一个机器人从坐标[0,0]的格子开始易懂,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标之和大于k的各自。例如,当k为18时,机器人能够进入方格[35,37],因为3+5+3=7=18。但它不能进入方格[35,38],因为3+5+3+8=19。请...原创 2020-04-08 10:53:14 · 238 阅读 · 0 评论 -
Leetcode 155.最小栈【原始栈实现】
文章目录问题描述解题报告实现代码参考资料问题描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。解题报告这个最小栈和一般的栈的区别在于其能够直接返回最小值。我们可以使用一个变量来保存最小值,但如果仅...原创 2020-04-06 23:16:05 · 160 阅读 · 0 评论 -
Leetcode 128.最长连续序列【借助map实现|并查集实现】
文章目录问题描述解题报告实现代码参考资料问题描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)O(n)O(n)输入:[100,4,200,1,3,2]输入:[100,4,200,1,3,2]输入:[100,4,200,1,3,2]输出:4输出:4输出:4解题报告暴力查找最粗暴的想法,从每个数字出发,依次查找后面能达到的最长连续序列长度。加上一点...原创 2020-04-03 23:32:50 · 290 阅读 · 0 评论 -
leetcode 32. 最长有效括号
文章目录问题描述解题报告实现代码参考资料问题描述给定一个只包含'('和')'的字符串,找出最长的包含有效括号的字串的长度。解题报告动态规划dp[i]dp[i]dp[i] 表示以 第i个字符结尾的最长有效字符串的长度。我们只需考虑‘)’所在的字符。当前一个字符为'(',则 dp[i]=dp[i−2]+2dp[i]=dp[i-2]+2dp[i]=dp[i−2]+2;当前一个字符为')'...原创 2020-04-01 22:39:53 · 95 阅读 · 0 评论 -
Leetcode 1111. 有效括号的嵌套深度
文章目录问题描述解题报告实现代码参考资料问题描述题目描述:在此解题报告为了使两个子序列的嵌套深度中较大者尽量小,最好的方式是尽可能让两个子序列的嵌套深度相同。所以问题的关键变成了 如何计算序列的嵌套深度。我们可以通过栈实现括号匹配。维护一个栈,从左至右遍历括号字符串中的每个字符:如果当前字符为(, 将其压入栈中,此时(的嵌套深度为栈的高度;如果当前字符为),此时)的嵌套深度为栈...原创 2020-04-01 21:13:39 · 193 阅读 · 0 评论 -
把数字翻译成字符串
文章目录问题描述解题报告实现代码问题描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。解题报告dp[i]dp[i]dp[i] 表示num中从第 1位到第i位的翻译方法数。则第 i 位可以单独成一位,或者和第...原创 2020-03-31 21:10:02 · 202 阅读 · 0 评论 -
Leetcode 136. 只出现一次的数字
文章目录问题描述解题报告实现代码问题描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?解题报告不考虑限制条件,该题有如下解决方法:集合当遇见一个尚未见过的元素时,加入集合;当遇见一个已经见过的元素时,将该元素从集合中删除。最后集合中只剩下一个目标值。异或...原创 2020-03-30 23:49:13 · 149 阅读 · 0 评论 -
Leetcode 914. 卡牌分组
文章目录问题描述解题报告实现代码问题描述给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 XXX,使我们可以将整副牌按下述规则分成1组或更多组:每组都有 XXX 张牌。组内所有的牌上都写着相同的整数。当且仅当你可选的 X>=2X>=2X>=2 时返回true。解题报告首先登记每个数出现的次数,当所有的次数的最大公约数 >=2>=2>...原创 2020-03-27 21:45:55 · 92 阅读 · 0 评论 -
Leetcode 253. 会议室 II
文章目录问题描述解题报告实现代码问题描述给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2]⋯ ](si<ei)[[s1,e1],[s2,e2]\cdots](s_i <e_i)[[s1,e1],[s2,e2]⋯](si<ei) ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排...原创 2020-03-25 19:15:16 · 480 阅读 · 0 评论 -
Leetcode 面试题59 - II. 队列的最大值
文章目录问题描述实现代码问题描述请定义一个队列并实现函数 max_valuemax\_valuemax_value 得到队列的最大值,要求函数 max_valuemax\_valuemax_value、push_backpush\_backpush_back、pop_frontpop\_frontpop_front 的均摊时间复杂度都是 O(1)O(1)O(1)。若队列为空,pop_fron...原创 2020-03-23 09:56:45 · 163 阅读 · 0 评论 -
Leetcode 23. 合并K个排序链表【分而治之&最小堆】
文章目录问题描述解题报告实现代码问题描述合并 kkk 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。输入输入输入:[ 1−>4−>5, 1−>3−>4, 2−>6][\\ \;\;\;\;1->4->5,\\ \;\;\;\;1->3->4,\\ \;\;\;\;2...原创 2020-03-17 21:08:31 · 125 阅读 · 0 评论 -
Leetcode 32. 最长有效括号 & Leetcode 1063. 有效子数组的数目
文章目录问题描述解题报告实现代码总结问题描述Leetcode 32. 最长有效括号* Leetcode 1063. 有效子数组的数目解题报告针对 最长有效括号 这道题:对于遇到的每个"(",我们将它的下标放入栈中。对于遇到的每个 “)”,我们弹出栈顶的元素并将当前元素的下标与弹出元素下标作差,得出当前有效括号字符串的长度针对 有效子数组的数目 这道题:维持...原创 2019-12-07 18:29:33 · 1052 阅读 · 0 评论 -
UVA210
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=838&page=show_problem&problem=146转载自: http://blog.youkuaiyun.com/alpc_paul/article/details/38062361#代码如下:#include<cstdio转载 2017-03-01 19:48:51 · 555 阅读 · 0 评论 -
UVA11988
题目链接: https://vjudge.net/problem/18693;jsessionid=24A69F507EA35DD0465189E99B4FB67E 代码如下:#include <iostream>#include<cstdio>#include<cstring>const int maxn =100000+5;int last,cur,next[maxn];char原创 2017-03-02 19:14:32 · 265 阅读 · 0 评论 -
算法训练 表达式计算
本文参考链接: http://blog.youkuaiyun.com/qq_36238595/article/details/54730341 题目链接:代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stack>using namespace std;/*在将符号入栈的时候需要进行判断当前的符号的优先级。乘除转载 2017-03-07 19:46:35 · 331 阅读 · 0 评论 -
UVA514
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=455 代码如下:#include <iostream>#include<cstdio>#include<stack>#define maxn 1005using namespace转载 2017-03-01 19:41:14 · 464 阅读 · 0 评论 -
Leetcode 255. 验证前序遍历序列二叉搜索树
问题描述 解题报告由于二叉搜索树中,树上任何一个节点,它的值比所有的左子树大,比所有的右子树小遇到左子树时,全部入栈,遇到右子树时,将与其平级的左子树出栈【它具有大于平级左子树的性质】;出现出栈的时候,新来的元素必定是大于已经出栈的元素。代码实现class Solution {public: bool verifyPreorder(vector<int>&a...原创 2019-11-01 15:47:38 · 849 阅读 · 0 评论 -
Leetcode 1063. 有效子数组的数目
文章目录问题描述解题报告代码实现问题描述 解题报告略代码实现class Solution {public: int validSubarrays(vector<int>& nums) { int res=0,n=nums.size(); for(int i=0;i<n;i++){ for(i...原创 2019-11-09 12:01:33 · 914 阅读 · 0 评论 -
leetcode 921. 使括号有效的最少添加
文章目录问题描述解题报告实现代码问题描述解题报告一个左括号必匹配一个右括号实现代码class Solution {public: int minAddToMakeValid(string S) { int ans=0,bias=0; // stack<char>s; // for(int i=0;i<S.s...原创 2019-11-12 09:44:59 · 275 阅读 · 0 评论 -
Leetcode
文章目录问题描述解题报告实现代码问题描述解题报告实现代码结构体/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), le...原创 2019-11-12 10:25:23 · 83 阅读 · 0 评论 -
Leetcode 890. 查找和替换模式
文章目录问题描述解题报告实现代码问题描述解题报告该题没有是一道纯粹的数据结构题目,没有涉及算法设计。使用 mapmapmap 结构保证同一个字符能够映射到同一个字母里;使用 setsetset 结构保证没有哪两个字母映射到同一个字母上。如果某个模式字母尚未建立映射关系,但是即将建立映射关系的value值已经出现过,则终止检测。实现代码class Solution {publi...原创 2019-12-02 19:59:52 · 265 阅读 · 0 评论