数据结构刷题记录
LeetCode,Newcode刷题总结
Leopiglet
这个作者很懒,什么都没留下…
展开
-
栈与DFS
这里写目录标题栈的应用举例:最小栈[155]例题有效的括号[20]单调栈下一个更大的值[496]升温等待时间[739]栈的应用举例:最小栈[155]输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3,null,0,-2]解释:// 对象声明MinStack minStack = new MinSt原创 2020-10-24 10:49:50 · 282 阅读 · 0 评论 -
四数之和(双指针经典案例,与快排异曲同工)
四数之和(双指针经典案例,与快排异曲同工)给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2]原创 2020-10-24 10:49:29 · 140 阅读 · 0 评论 -
【算法拾遗·字符串篇】KMP字符串匹配算法
KMP字符串匹配算法详解问题描述暴力搜索匹配KMP匹配图解:1、构建最长公共前后缀表2、KMP匹配操作总结:代码:问题描述已知字符串 text 和 字符串 pattern,问 pattern 是否为 text 的子串暴力搜索匹配int main() { const char *pattern = "ACTG"; const char *text = "CGTACGTACCTAGCACTGACTAGCCA"; int cnt = search(pattern, text);原创 2020-09-29 16:20:53 · 149 阅读 · 0 评论 -
数据结构之并查集(Disjoint Set)
@[TOC](数据结构之并查集(Disjoint Set))问题与引出已公开的信息研究对象:图解决问题:检测图中是否存在环并指出冗余连接已知:有环图中,边数 >= 顶点数方法图解1、下图中的无向图有6个顶点和6条边,是有环图。2、遍历图中各边:2.1、将边上两顶点放入一个集合2.2、依次遍历其他边,并将相关顶点放入集合2.3、若存在边上两点跨集合,则合并两集合2.4、若存在边上两点均在同一集合,则该边使得图构成环,为冗余连接参考:B站:正月点灯笼.算法实现应考虑的要素1原创 2020-09-17 15:38:53 · 236 阅读 · 0 评论 -
Leetcode刷题总结之深度优先搜索
深度优先搜索整理经典例题:岛屿数量问题题目:显式栈的非递归DFS方法递归DFS方法p.s.:BFS方法总结:BFS和DFS的区别递归的DFS实际也要调用栈非递归的DFS与BFS的优势模板:显式栈的非递归DFS方法递归DFS方法经典例题:岛屿数量问题题目:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,可以假设该网格的四条边均被水包围。实例1:输入:[[‘1’,‘1’,‘1原创 2020-09-11 19:36:15 · 423 阅读 · 0 评论 -
回溯经典:N皇后
N皇后与回溯递归题目具体思路以行(row)为基准开始递归回溯1、引入哈希集合进行快速“查重”2、利用N位二进制整数辅助“查重”题目N×N的棋盘里要放N个皇后,确保所有皇后都不在同一行、同一列、同一主对角线和同一副对角线上。求所有可能的不同摆放方案。图例:8皇后的一种解每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。具体思路以行(row)为基准开始递归回溯回溯的具体做法是:1、初始化:使用一个数组记录每行放置的皇后的列下标,依次在每转载 2020-09-03 20:45:29 · 195 阅读 · 0 评论 -
字符串的逆反序输出算法整理
字符串逆反序输出算法题目拆分:输入模块操作要求求解思路p.s.:其他逆序方案1、传统的逐位取值移位2、原数与1位与,再与新数位或,新数左移腾空间,原数右移去旧值3、分治的方法五一放假了,小伙伴们都去玩耍了,每个小伙伴均被分配一个编号,编号格式为一组16进制表示的数字串,如123456789abc,表示由0x12/0x34/0x56/0x78/0x9a/0xbc组成的6个数字串。伙伴编号是通过一种称为逆反序输出的算法求得,算法原理是对于一串输入,先按bit逆向反转,再对每个bit取反输出。逆向反转的意思原创 2020-09-03 16:03:26 · 1042 阅读 · 0 评论 -
哈希集合与哈希表的刷题总结
哈希表的使用入坑例题电话号码字母组合三级目录入坑例题电话号码字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].class Solution {public: vector<string> letterCombinations(string digits原创 2020-08-31 15:25:00 · 552 阅读 · 0 评论 -
Knapsack背包问题入门
Knapsack背包问题入门0/1背包问题[O(C)]0/1背包的回溯问题0/1背包问题概率变种:多重背包问题[O(C*Σ\SigmaΣn)]完全背包问题0/1背包问题[O©]已知:背包容量 C,物品种类 N,每种物品有且仅有1个每种物品拥有负载 w 和价格 p 两个属性。设(N+1)×2 维数组{ vector<pair<int,int>> w_p },w_p[n].first ------------ 物品n的负载w_p[n].second ------- 物品n原创 2020-07-13 08:51:49 · 300 阅读 · 0 评论