随笔分类 -  leetcode-题目分类 / 技巧

摘要:题目描述 给了列表异或和的定义 现在的列表是arr1和arr2构造出来的,元素对是arr[i] and arr[j] 问以上列表的异或和? f1-依次确定答案的每一位 基本分析 为什么考虑计算答案的每一位?表达式只包含位运算(按位与 和按位异或) 具体怎么计算?要知道答案的第k为是1还是0->分别计 阅读全文
posted @ 2023-04-13 14:36 zhangk1988 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 给了一个正整数k,表示长度是k的所有回文数字 再给了和很多q,问第q小的数字是多少? f1 数学关系+构造 基本分析 从q之间的相互关系考虑还是单独考虑某个q和结果的关系?后者 长度是k的回文数字有啥特性?前一半数字是固定的,half = k + 1 >> 2, str[num][:hal 阅读全文
posted @ 2023-04-09 09:56 zhangk1988 阅读(32) 评论(0) 推荐(0)
摘要:题目描述 给了一个字符串,只有* 和 | ,分别表示盘子和蜡烛 再给了很多查询,对某个查询[x, y],问在区间内的且在蜡烛之间的盘子的个数? f1-预处理+前缀和 基本分析 1个字符多个查询可以考虑什么?预处理 对每个查询x,y需要知道什么?索引>=x的最近的盘子位置;索引<=y的最近的盘子的位置 阅读全文
posted @ 2023-04-07 17:19 zhangk1988 阅读(17) 评论(0) 推荐(0)
摘要:题目描述 给一个整数数组nums和整数x 需要从数组的左边或者右边删除元素,然后用x减去删除的元素 问如果x刚好成删到0,怎么删最短? f1-反向思考+双指针 基本分析 反向思考?找一个最长的子数组满足和= sum(nums) - x 为啥可以双指针?(1)元素都是整数,序列和是单调的;(2)元素连 阅读全文
posted @ 2023-04-06 19:26 zhangk1988 阅读(38) 评论(0) 推荐(0)
摘要:题目描述 给一个数组,再给一个值的范围[l, r], 问最大值在[l, r]之间的子数组有多少个? f1-双指针 基本分析 如果枚举子数组的右端点i,会有几种情况?(1)arr[i] > right; (left <= arr[i] <= right; (3)arr[i] < left 假如枚举到右 阅读全文
posted @ 2023-04-04 23:48 zhangk1988 阅读(24) 评论(0) 推荐(0)
摘要:题目描述 给了一个数组,元素都是正的 给了数组分数的定义:子数组的和*数组长度 问分数严格小于k的非空子数组数目? f1-双指针 基本分析 能挖掘出啥性质?(1)数组都是正的,且另一个因子是长度相关,对每个右端点j,找到最远的左端点i时候,[i+1, j],[i+1,j]...[j, j]都是满足的 阅读全文
posted @ 2023-04-04 10:25 zhangk1988 阅读(23) 评论(0) 推荐(0)
摘要:题目描述 从数组中找一个连续子数字,对子数组升序的时候,数组就是升序的。 求最短的子数组的长度? f1排序+双指针 基本分析 如果排序后怎么找?左边第一个不等的点和右边第一个不等的点 代码 class Solution: def findUnsortedSubarray(self, nums: Li 阅读全文
posted @ 2023-03-24 20:01 zhangk1988 阅读(39) 评论(0) 推荐(0)