摘要:215. 数组中的第K个最大元素 优先队列的思路是很朴素的。由于找第 K 大元素,其实就是整个数组排序以后后半部分最小的那个元素。因此,我们可以维护一个有 K 个元素的最小堆: 如果当前堆不满,直接添加;堆满的时候,如果新读到的数小于等于堆顶,肯定不是我们要找的元素,只有新遍历到的数大于堆顶的时候,
阅读全文
摘要:347. 前 K 个高频元素 建立一个map集合第一个元素代表当前的数字,第二个元素代表出现的次数 以元素出现次数作为排序标准建立小根堆 遍历map加入到堆中,当堆的长度为k的时候,堆中存储的就是当前的前K个高频元素,堆顶是出现次数最少的元素 当遍历到下一个map元素,比较一下当前数出现次数与堆顶的
阅读全文
摘要:96. 不同的二叉搜索树 首先,我们要知道二叉搜索树的性质,对于一个二叉搜索树,其 【左边的节点值 < 中间的节点值 < 右边的节点值】 也就是说,对于一个二叉搜索树,其中序遍历之后形成的数组应该是一个递增的序列 这样我们遍历刚刚的nums数组,以值i(注意不是下标)当做根节点,其左边有i-1个节点
阅读全文
摘要:240. 搜索二维矩阵 II Z字搜索法,持续缩小 target 可能在的范围,从右上角进入矩阵开始搜索,左下角也是一样的,但是不能从左上角或右下角开始 范围:x再大也不能超过矩阵宽度,y再小也不能小于0 如果此处的数大于target,由于从左向右严格递增,则y--向左寻找更小的数 如果此处的数小于
阅读全文
摘要:每一次起跳看看能否到达下一位置 设置k为每次起跳最远能到哪里 循环遍历,i为当前所在格子,每次判断一下k能否达到当前格子 每次循环维护k,k一直为能最远跳到的距离,取上次k与当前格子+当前能跳到最远的距离的最大值。 public boolean canJump(int[] nums) { int k
阅读全文
摘要:62. 不同路径 首先,机器人每次走路只能向下或者向右走一步根据网格是m*n,初始化动态规划数组,dp[m][n],那么如果机器人走到i,j位置,有多少种情况呢?首先分成子问题,机器人怎么走到i,j前一个位置的呢?前一个位置可能是从i-1, j走来的,也有可能是从i, j-1走来的 然后我们再考虑初
阅读全文
摘要:49. 字母异位词分组 首先根据题意得知,异位词指的是不同词中字母相同 拆分这个词为char[]数组,经过排序char[]数组,再转换为字符串key,如果有两个key是一样的,就说明这两个词为异位词 把这个key当作map集合的键,维护一个list作为map的值,每次如果搜到了相同的key就添加到l
阅读全文
摘要:如何确保RabbitMQ消息的可靠性 对于生产者,开启生产者确认机制,确保生产者的消息能到达队队列 对于mq,开启持久化功能,确保消息未消费前在队列中不会丢失 对于消费者,开启消费者确认机制为auto,有spring确认消息处理成功后完成ack 开启消费者失败重试机制,并设置MessageRevoc
阅读全文
摘要:155. 最小栈 首先关键是动态维护最小值,就是弹出元素为最小值的时候,如何知道次最小值 可以使用一个辅助栈mStack,mStack只用于存储push路径上的所有曾经的最小值,mStack的栈顶一直都是stack中的最小值 当第一次push val,或者后续每次push的时候小于mStack,就向
阅读全文
摘要:394. 字符串解码 public String decodeString(String s) { Stack<Character> stack = new Stack<>(); for(char c : s.toCharArray()){ if(c != ']'){//如果不是']'把所有字符加入
阅读全文
摘要:128. 最长连续序列 首先去重,直接把数组装入set集合即可 然后,设集合中的某个数为a。遍历集合set 假如这个集合中,存在a-1,说明a不是一个序列的起始值,跳过 如果不存在a-1,说明a是一个连续序列的起始值,再从a开始顺着往下找连续序列,也就是寻找set有无a++,如果有a++就说明连续,
阅读全文
摘要:287. 寻找重复数 由题中数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 维护一个映射关系f(n)= index -> num,其中数组的下标index,数字为num 当一个数组里有环的时候,例如 [1,3,4,2,2] [3,1,3,4,2] 映射为: 0 ->
阅读全文
摘要:75. 颜色分类 荷兰国旗问题,直接分成三部分[0区,1区,2区] 0区最右边为less指针,开始在0的左边 -1 2区最左边为more指针,开始在数组最后一个数的右边 nums.length index为指针,当index没有超过more区的时候可以进行循环 nums[index] == 1,跳过
阅读全文
摘要:581. 最短无序连续子数组 class Solution { public int findUnsortedSubarray(int[] nums) { int res = 0; if(nums.length == 1 ){ return res; } int length = nums.leng
阅读全文
摘要:647. 回文子串 回文子串是指这个子串正着读反着读读得内容都一样,比如aaa,有以下回文字串a,a,a,aa,,aa,aaa,字符虽然一样但不是同一个字符仍然被看作一个子串 我们可以使用双指针中心扩展法解决这个问题 一个字符串中心只能有两个或者一个,如果有3个,那么他已经是一个回文子串了 中心的个
阅读全文
摘要:621. 任务调度器 假设有任务["A","A","A","B","B","B"],n=2,可以画图表示CPU的时间分配 MT表示maxTime,这个任务列表中出现次数最大的任务数量,这里就是MT=3 MC表示maxCount,在这个任务列表中与出现最多的任务次数相同的任务数目,包括这个出现次数最多
阅读全文
摘要:Spring @ControllerAdvice 类型:类注解 位置:类 作用:指定拦截哪些类,并且进行AOP增强 属性 annotations:拦截加了这些注解的的类,并且进行增强 范例 @ResponseBody @ControllerAdvice(annotations = {RestCont
阅读全文
摘要:负载均衡流程 首先order-service发起请求获取user-service,到ribbon ribbon发送给eureka-server注册中心拉取userservice eureka-service返回user-service服务列表给Ribbon Ribbon轮询到8081 负载均衡原理
阅读全文
摘要:626. 换座位 表: Seat + + +| Column Name | Type |+ + +| id | int || name | varchar |+ + +Id是该表的主键列。该表的每一行都表示学生的姓名和ID。Id是一个连续的增量。 编写SQL查询来交换每两个连续的学生的座位号。如果学
阅读全文