随笔分类 -  leetcode-mid

摘要:题目描述 从数组中找一个连续子数字,对子数组升序的时候,数组就是升序的。 求最短的子数组的长度? f1排序+双指针 基本分析 如果排序后怎么找?左边第一个不等的点和右边第一个不等的点 代码 class Solution: def findUnsortedSubarray(self, nums: Li 阅读全文
posted @ 2023-03-24 20:01 zhangk1988 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目描述 给一个数组nums,数组是循环的,求每个元素的下一个元素 f1-xxx 基本分析 循环数组的情况怎么考虑?拉直或者下标取余数 剩下怎么解决?常见的单调递减栈 代码 左到右 class Solution: def nextGreaterElements(self, nums: List[in 阅读全文
posted @ 2023-03-22 14:12 zhangk1988 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目描述 nums2中元素都不同,num1是nums2的一个子集。 需要找出nums2中每个元素下一个更大的元素,在映射回nums1中? f1-哈希表+左到右的单调栈 基本分析 向右找最近的更大的值,维护递增栈还是递减的栈,是严格的吗?需要维护非严格递减的栈,例如43342,33都会入栈。 找到的逻 阅读全文
posted @ 2023-03-22 12:58 zhangk1988 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目描述 给了一个字符串百奥是的非负整数num和整数k,问怎么移除其中的k个数字,让剩下的数字最小? f1-单调栈 基本分析 怎样的数字是最小的?单调递增排序的 带有约束k怎么考虑?只要栈非空+栈顶>d+ 还有k就能一直删 k没用完怎么办?字符是单调增的,从后往前删k次(k被维护过) 结果怎么得到? 阅读全文
posted @ 2023-03-21 19:59 zhangk1988 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目描述 给了一个字符串s,需要删除重复的字符。 要求是(1)每个字母只保留一次;(2)结果的字典序最小 f1-贪心+单调栈 基本分析 如果给定一个s,只能删除一个,怎么删可以使字典序最小?从左到右删除第一个s[i]>s[i+1]的值,比如456651,删除第二个6;987,删除9。 结合上面的思路 阅读全文
posted @ 2023-03-21 16:20 zhangk1988 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出一个数组nums,问能不能分为k份,每份的和都相等,数组的长度不超过16 f1-状态压缩+记忆化搜索 基本分析 数组长度不超过16?暗示可以对选择情况用二进制进行表达 dfs的过程需要怎么实现?(1)参数就是当前的选择情况和对应的和;(2)最终退出条件就是s取到了mask,可以返回Tr 阅读全文
posted @ 2022-12-29 19:32 zhangk1988 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目描述 给一个数组nums,nums中元素代表火柴棒的长度。 给的要求是火柴棒可以连接,不能折断,每根必须用一次,问能不能连成正方形? 基本分析 f1-状态压缩+动态规划 火柴数组长度不超过15暗示什么?可以用二进制数s表示数组中索引对应的火柴的使用情况 火柴数组什么情况可以提前排除?(1)长度总 阅读全文
posted @ 2022-10-13 11:43 zhangk1988 阅读(84) 评论(0) 推荐(0) 编辑