算法总结——堆栈、字符串、数组类题目
先说stack的题目
stack的实现:链表,数组
题目:
(1)简单的:min stack,一个数组实现三个stack
(2)经典的stack问题:经典汉诺塔问题,逆波兰式计算或者产生逆波兰式,简化文件路径,验证括号对是否合法,找出最长有效括号(贪心+stack求解)
(3)涉及tree的遍历问题:tree中序遍历的迭代解法,二叉搜索树的两节点和(two sum思路)
(4)***stack排序问题***:为stack排序,从柱状图里找最大矩形(本质上类似stack排序),构造数组的maxtree(和最大矩形题目类似思路)
(5)蛋疼的其他问题:仅使用递归反转一个stack(两个递归函数,***hard***)
再说队列的题目
队列的实现:链表
题目:猫狗队列(链表合并),两个stack实现队列,数组滑动窗口的最大值(类似stack排序做,和柱状里找最大矩形题目解法有点类似,***hard***)
最后是堆的题目
题目:
(1)经典问题:合并多个有序链表,行列有序矩阵topK(k*logk解法,j+1,i+1)
(2)***需要观察总结规律的***:数组滑动窗口的最大值(使用优先级队列剔除“过期”的最大值),最大值-最小值<=num的子数组数目(滑动窗口+堆)
算法总结——数组和字符串问题
先说字符串的题目
(1)简单问题:变形词,字符判重,是否为字符串旋转,reverse字符串,字符串压缩(a3b2这种,计数器),单词替换,翻转字符串(通常两两翻转搞定),括号字符串问题(stack问题)
(2)经典问题:数字验证,字符串转数字(状态机),编辑距离(DP),公式字符串求值(python eval,本质上也是状态机实现),Trie,正则表达式匹配(递归简单,DP难)
(3)dfs:提取单词(dfs,如果是最多单词则dp),从去.字串里提取IP地址,字符串的全排列(abc、acb...使用swap+一个for)
(3)涉及二分查找问题:有序+NULL的字符串数组查找,01字符串边界问题
(4)涉及双指针问题:单词数组中两个单词的最小距离,字符串中最长不重复子串,一个字符串中包含另外一个字符串(不要求有序)的最长子串长度,
(5)DP问题:添加最少字符整体变成回文(双dp)
(6)其他:产生括号对(递归+剪枝),数字字符串相乘(用数组存进位)
再说数组和矩阵的题目
(1)简单的问题:stringbuffer,两个有序数组归并问题
(2)经典问题:topK,数组中出现次数超过一半的数字,2sum问题,prefixsum问题(数组累加和为特定值,和双指针区别,最大值的话就dp),快排partition,time range排序重叠区间问题
(3)bfs或dfs:最短通路
(3)涉及二分查找问题:行列排序的矩阵中查找(对角线二分或者右上角比较),旋转数组查找,两个有序数组合并后的中位数或kth数(难)
(4)涉及排序问题:外部排序,1~N数字排序,矩阵的topK,排序后相邻数最大差值(桶排序),数组配对(计数排序)
(4)涉及双指针问题:最长可整个子数组(子数组max-min=1),全正数数组sum为k的最长子数组
(5)DP问题:子数组最大累加和(延伸:子矩阵最打累加和),子数组的最大累积乘积
(6)其他:N*M图像旋转90度问题,矩阵行列清零,转圈(之字形)打印矩阵或者矩阵顺时针旋转90度(使用左上角右下角坐标做基准,递归),数位重组
转载于:https://www.cnblogs.com/bonelee/p/10188204.html
算法总结——堆栈、字符串、数组类题目相关推荐
- 【二分查找延伸--实际算法应用】数组类题目
声明:博主是基于labuladong微信公众号文章模板驱动刷题,进行的自我刷题感悟和记录在此. 模板详情见labuladong微信公众号文章文末:原创于自己在此基础上的笔记.感悟.整合其它文献和自己的 ...
- MFC CStringArray 字符串数组类 使用方法
https://blog.csdn.net/thanklife/article/details/76836487
- 算法④:把字符串变成数字
算法④:把字符串变成数字 题目链接:https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/ ...
- .net 遍历数组找重复值写入一个新数组_面试 | 数组类算法精析
点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 面试中的算法问题,有很多并不需要复杂的数据结构支撑.就是用数组,就能考察出很多东西了.其实,经典的排序问题,二分搜索 ...
- 【算法基础】LeetCode股票交易类算法题目总结(一次交易,两次交易,无数次交易)...
大家好,前一段时间的基金市场波动很大啊,也就又诞生了很多"韭菜",在这里千寻也提醒大家"股市有风险,入市需谨慎",玩基金一定用不着急用的钱哦~ 刷算法题目,应该 ...
- 字符串工具类、数组工具类、集合工具类、转型操作工具类、编码与解码操作工具类...
package hjp.smart4j.framework.util;import org.apache.commons.lang3.StringUtils;/*** 字符串工具类*/ public ...
- 算法--------数组类---------总结
前言: 写算法也写了十来天了,都是数组类的.今天完成了一个课题,觉得需要总结下.今天突然很遗憾的发现,自己之前写过的算法,现在自己回想起来,也不知道怎么解决. 温故而知新.决定,今天就不写算法题了,决 ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- spring字符串判空_字符串工具类StringUtils实现字符串是否中文、字符串分割/判空/替换/查找、是否包含乱码及字符串数组合并等常规操作...
一.前言 关于字符串工具类StringUtils实现字符串是否包含isChinese中文.是否包含isMessyCode乱码.常规数据类型转换.替换/删除/判空.两字符串数组mergeStringAr ...
最新文章
- 超棒的微软Metro风格Logo设计
- uboot流程——命令行模式以及命令处理介绍
- GitHub图片无法显示
- Unity中BVH骨骼动画驱动的可视化理论与实现
- [BZOJ]1023: [SHOI2008]cactus仙人掌图
- 多边形上点的顺序排序_一种寻找多边形视觉中心的新算法
- XML模板解析————Dom4j解析xml案例分析
- STM32串口DMA超时接收方法,可大大节约CPU时间
- 华为mate10pro测试软件,华为Mate10和华为Mate10Pro的区别在哪里?华为Mate10和华为Mate10Pro对比测评告诉你(附全文)...
- pandas dataframe对多列同时排序
- SASL讲解,以及在Spark中的应用
- 平衡二叉树、B树、B+树、B*树
- 计算机房防凝露保温材料,机房保温的方案.docx
- 极速办公(Excel)如何方框内打勾
- 中国网络游戏行业发展模式创新与投资前景调研报告2021-2027年
- Android 本地化翻译插件,解放你的双手! AndroidLocalizePlugin
- SQL语句中case、when、then的使用
- 问题 B: Bumped!
- 微信公众号【黄小斜】和【Java技术江湖】
- ggplot2-标度、坐标轴和图例7
热门文章
- php xxtea加密,PHP实现的XXTEA加密解密算法示例
- oracle指定用户SID,如何修改oracle SID
- 分布式锁能解决 mysql死锁吗_mysql死锁问题分析
- python打开电脑摄像头_Python调用摄像头
- centos7 安装git_如何在 CentOS 7 上挂载 Amazon EFS 文件系统?
- jquery的四层联动插件jquerySelect
- 一个Java程序员的面试心得,最终入职阿里
- 【深度学习】深入浅出 CRF-RNN Layer(The End-to-end)
- 【深度学习】腹部CT的肝脏肿瘤分割的探索
- python【力扣LeetCode算法题库】6-Z 字形变换