自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 [Leetcode刷题] - LC007 Reverse Integer

将一个Int类型的数字进行反转,如果反转结果超出int的范围,返回0。

2023-03-30 10:02:09 95

原创 [LeetCode刷题] - LC006 ZigZag Conversion

给定一个字符串,想让你用纵向zig-zag形式展开,然后在横向进行拼接输出最后的新字符串。

2023-03-30 09:33:40 240

原创 [Springboot 单元测试笔记] - Mock 和 spy的使用

springboot 单元测试笔记,mockito和spy使用

2023-02-15 15:02:06 3075

原创 [Leetcode刷题] - LC005 最长回文子串

Leetcode 005 题解 - 最长回文子串

2022-11-22 14:56:45 112

原创 [Leetcode刷题] - LC003 Longest Substring without repating character

Leetcode 003题解

2022-11-22 13:33:59 231

原创 [Leetcode刷题] - LC002. Add Two Numbers

Leetcode 002 题解

2022-11-15 16:24:10 225

原创 [Leetcode刷题] - LC001. TwoSum

Two Sum求解

2022-11-15 07:52:47 128

原创 [Springboot 单元测试笔记] - 加载上下文依赖类

Springboot单元测试 - 如何载入和mock依赖类

2022-09-22 13:26:41 1544

原创 [Springboot 测试学习笔记] - 基本JUNIT单元测试入门

上一篇介绍了常见springboot项目测试常用框架,这篇文章我们正式开始入门Springboot测试,笔者当前工作中的springboot版本主要是1.x,以下会主要以springboot 1.x版本对应的框架版本进行讲解。

2022-09-22 12:17:47 715

原创 [Springboot 测试学习笔记] - 测试常见框架及规范

spring开发常用的测试框架。

2022-09-22 05:15:06 383

原创 [Springboot 测试学习笔记] - 测试的种类及基本定义

springboot测试开发学习笔记001 - 测试开发概述

2022-09-10 07:04:49 425

原创 [Twitter高频题] - Leetcode 653. Design Log Storage System

题目描述Leetcode 653:设计一个log system,实现两个问询,一个插入一个[ID, Timestamp]的log,一个给出起始和终止点返回所有Timestamp在其中的log-ID(以时间升序的方式)。题目思路1. 暴力求解建立一个List来保存所有的log对象,然后查找log时,遍历所有List中的数据,将符合条件的返回到一个新的List中然后,对这个List以TimeStamp排序返回。优点是插入可以,缺点是每一次查找log时需要进行排序返回,大大降低了效率。2. .

2022-03-29 00:04:57 1164

原创 [Twitter高频题] - Leetcode1817. Find User Active Minutes

题目链接Leetcode 1817.:题目描述迷惑性有点高,简单白话解释一下,题目输入是一个二维数组,每一个元素对应一个user在某分钟活跃的记录,[1,5]就是指ID=1的用户在5分钟这个时间有活跃过。然后定义了一个名词UAM(User Active Minutes) -是指一个用户一共在那些分钟活跃过的总和,比如用户ID=1在min=2, min=5, min=5活跃过,那么他的UAM = 2 (重复分钟只统计一次)。然后最后问题想让你统计每一个UAM对应多少用户。题目思路这道题就...

2022-03-28 23:04:19 597

原创 [Twitter高频题] - Leetcode 453. Minimum Moves to Equal Array Elements

题目链接Leetcode 453.简单理解一下题目,定义一个move的操作,可以给数组中n-1个元素都同时加1,问最少move操作能是数组所有元素相同。题目思路1.暴力求解 -会超时正向思维那么我们每一次move操作的时候,给除最大值以外的所有值加1,直到最大值与最小值相等,也就是所有值相同。时间复杂度会超时。class Solution { public int minMoves(int[] nums) { int res = 0; ...

2022-03-25 04:39:56 676

原创 [模板总结] - 二分查找

模板题目链接Leetcode 34. Find First and Last Position of Target:二分法最重要的两个模板,一个找满足条件的第一个值,一个是找满足条件的最后一个值。二分查找思路Binary Search可以通过递归和迭代两种方式实现,这里介绍迭代写法。二分查找首先前提是数组有序,并且是能够通过条件将结果分成两部分 —— 满足或者不满足。二分查找的应用归根到底就是两种:找满足条件的第一个值 基本思路:每一次循环选择当前区间中点,如果,指针向中点及其左边...

2022-02-24 12:54:52 303

原创 [模板总结] - 归并排序思想

模板题目链接Lintcode 454. Sort Array:归并排序Leetcode 23. Merge K sort-lists:K路归并问题归并排序思路归并思路很好理解,以两个数组归并来举例,开一个新数组来保存新的合并结果,两个原始数组(需要保证两个原始数组有序)从头开始比较,哪个比较小就加入合并数组中,最后就是排序后结果。对于归并排序问题,由于原始数组非有序,所以需要利用分治思想将原始数组分解到有序数组,也就是单一元素数组自身是有序,通过合并小问题来最终解决两个原始数组合...

2022-02-24 11:56:27 963

原创 [模板总结] - 双指针

题目描述 & 链接LintCode 228. 链表中点-同向双指针LintCode 31. Partition Array-相向双指针LintCode 200. Longest Palindromic Substring-背向双指针具体思路1.同向双指针同向双指针通常解题思路就是一个主指针,一个辅助指针,主指针每次循环中一般走一步,每一次循环中辅助指针不断向前扫描,典型同向双指针:快慢针找某个位置 KMP算法扫描的过程也类似同向双指针 归并排序快...

2022-02-24 08:14:01 530

原创 [亚麻高频题] Leetcode 426. Convert Binary Search Tree to Sorted Doubly Linked List (BST转换成双链表)

题目描述 & 链接Leetcode 426:将BST结构转化成双链表结构,使得每一个节点连接他的前驱结点和后继节点,并且头,尾两个节点也要相连。要求不开额外空间题目思路这道题我给点个赞,让我对于中序遍历DFS模板有了更深刻的理解。首先如果可以开额外空间的话怎么做?以为二叉树中序遍历有个隐藏性质:中序遍历中当前节点上一个点即为前驱节点,下一个点即为后继节点。那么可以将BST结构以中序遍历顺序,保存并遍历该数组让每一个点与左右相连即可。如果不使用额外空间应该如何做。我们先看一下BST..

2022-02-14 08:05:38 553

原创 [模板总结] - 二叉搜索树 BST - 基础篇

模板题目链接BST查找 -Leetcode 270. Closest BST Value BST插入 -Leetcode 701. Insert Node in BST BST删除 -Leetcode 450. Delete Node in BST二叉搜索树-BST 概述BST是二叉树的一种,具备二叉树的结构性质:只有一个Root节点,每一个节点最多可以有左右两个子节点。BST自身的性质:每一个节点的左儿子数值一定比他小,右儿子的数值一定比他大。这个性质也使得BST的中序遍历输出结果是一...

2022-02-14 01:32:12 456

原创 [亚麻高频题] Leetcode 1597. Build Binary Expression Tree From Infix Expression (中缀表达式构造二叉表达式树)

题目描述 & 链接Leetcode 1597:根据计算表达式生成二叉树,使得二叉树的中序遍历结果与计算表达式相同题目思路对于计算表达式的题目,通常能使用双栈思路求解,这道题思路与Leetcode 772. Basic Calculator III (计算器 III)基本相同,唯一不同只是处理结果上,之前直接计算出结果即可,这里需要建成二叉树节点,所以数字栈保存的是当前树节点,计算过程是将栈顶pop出来,作为树根,将数字栈pop出两个节点作为左右叶子节点,与树根相连,然后将该树根重新加..

2022-02-10 05:09:53 7924

原创 [亚麻高频题] Leetcode 772. Basic Calculator III (计算器 III)

题目描述 & 链接Leetcode 772:是Leetcode 224. Basic Calculator(计算器)题目的进阶版,给定一个计算表达式,运算符包括左右括号,"+ - * /"运算,求最后计算结果题目思路与Leetcode 224. Basic Calculator(计算器)是相同的,利用双栈(符号栈,数字栈)求解,具体可以参考前面链接,唯一需要改进的是加入乘法和除法并分配为最高优先级,在维护符号栈时,当新符号优先级比栈顶小或相同时,触发计算,直到栈顶空或者比当前有限...

2022-02-10 04:39:45 1633

原创 [亚麻高频题] Leetcode 224. Basic Calculator(计算器)

题目描述 & 链接​​​​​​Leetcode 224​​​​​​:给点一个String表达式 "1 + 2 - 3"返回最后的计算结果,运算符有+/-, ()数值存在负数。题目思路基本表达式计算类问题的通用思路,就是采用双栈,一个栈保存运算符号和括号,一个栈来保存数字。需要注意的是符号栈根据优先级维护一个单调递增栈,首先定义运算符的优先级:"(" 是1优先级; "+","-"是2优先级。基本思路遍历每一个字符,当遇到"("进符号栈,当找到")"时开始进行数字运算,直到符号栈栈顶...

2022-02-10 02:02:39 352

原创 [模板总结] - Dijkstra 最短路径求解

模板题链接Leetcode 743. 网络延迟时间经典练习题787. Cheapest Flights Within K Stops1928. Minimum Cost to Reach Destination in TimeDijkstras算法介绍1. 最短路径算法概述在图论问题中最为经典问题之一就是求最短路径问题,今天我们主要来讨论单源点最短路径问题,求解最短路径问题首先我们需要理解问题中图的类型,通常来说构建图会有下面几种情况 无边权DAG: 也就是拓扑图,这种图的

2022-02-06 06:58:00 497

原创 [OOD设计] - Pub Sub Pattern (观察者设计模式)

题目描述 & 链接Lintcode. Pub-Sub Pattern: 构建一个观察者模型,实现下面问询:1.让用户订阅;2.让用户取消订阅;3.给某频道发送信息,所有订阅该频道的用户都会收到题目思路思路比较简单,可以建立一个HashMap,保存每一个channel对应订阅的用户,然后每一次发送信息就枚举所有订阅用户发送即可,这里需要注意我们可以选择ArrayList来保存用户,但是问题是:1.查重不好处理;2. 删除操作需要。因此这里使用 HashMap<String, Has.

2022-02-03 09:47:13 427

原创 [OOD设计] - Black Jack Game (21点)

题目描述&链接21点游戏OOD设计:设计一个可以多人在线的21点游戏,一个游戏室会有一个荷官(发牌员),多名玩家,一条牌组。每一名玩家用手里的牌与发牌员比大小,谁越接近21点,谁就算赢。如果你的牌是一个Ace + 10的话,那么你就是Black Jack也就是游戏中最大牌。题目结构设计梳理作为一个初学者,一开始看这道题着实是没有什么思路,不知道从哪里下手,而且看了网上一些设计,写的确实很好,但是我认为功能过于完善,我并不认为在面试20分钟的时间内,能够做到那种完美的设计。我这篇文章主要的

2022-02-03 05:48:44 1265

原创 [亚麻高频题] Leetcode 239. Sliding Window Maximum(滑动窗口最大值)

题目描述 & 链接Leetcode 239. Sliding Window Maximum:定义一个窗口大小,求数组从头到尾窗口区域内最大值。题目思路:1. 单调栈这道题目我们需要维护两个东西:一个是区域内最大值;另一个是如果窗口滑动导致当前最大值失效后,潜在的最大值。第一个区间最大值,可以直接以打擂台方式维护,但是潜在最大值我们则需要以大小顺序保存在后面。这里我们可以使用单调栈来进行维护。单调递增递减栈都可以,如果递减栈最大值保存在尾部,然后新加入的元素,根据单调递减关系保存在头.

2022-02-01 23:32:23 1050

原创 [亚麻高频题] Leetcode 151. Reverse Words in a String(翻转字符串)

题目描述 & 链接Leetcode 151. Reverse Words in a String:将一个包含多个单词的字符串按单词顺序翻转题目思路题目比较直截了当,就是将所有单词逆序组合成最后结果,先通过空格进行分割,然后从后往前遍历合成即可,这里题目说单词之间原先可能存在多个空格,那么分割后的结果存在两种情况:1.空元素(开头,结尾存在空格);2.元素是空格(单词之间有过个空格时)。代码如下:class Solution { public String reverse

2022-02-01 22:11:36 602

原创 [亚麻高频题] Leetcode 901. Online Stock Span(在线股票价格跨度)

题目描述&链接Leetcode 901. Online Stock Span:在线接收股票价格,返回前面连续天数股票价格比当前低题目思路1. 暴力枚举寻找比当前元素大的上一个元素位置,又是单调栈思路,不同的是这次输入是Stream输入。最简单粗暴的方法就是从当前位置遍历前面位置,当发现大于当前元素的位置,记录天数。每一次操作时间复杂度:, 空间复杂度:。2. 单调栈该题目的问询明显可以使用单调栈进行求解,但是如果直接按照单调栈模板套用的话,每次操作时间复杂度依然是。如果通..

2022-02-01 12:35:46 373

原创 [亚麻高频题] Leetcode 739. Daily Temperatures(每日温度)

题目描述&链接Leetcode 739. Daily Temperatures:一个数组记录每日的温度,输出一个数组每一个元素代表下一个比当前温度高的天数题目思路单调栈经典应用,寻找比当前元素更高的下一个元素位置,维护一个单调递减栈,如果出现比栈顶元素大的新元素,那么就把比新元素小的栈内元素pop出来,当前元素即为这些元素更大的下一个元素位置。Java中使用Stack推荐使用Deque,Java源码对于Deque进行了优化,有效提高了运行速度。代码如下:class Solu..

2022-02-01 12:09:11 528

原创 [亚麻高频题] Leetcode 503. Next Greater Element II(下一个大的元素)

题目描述 & 链接Leetcode 503. 下一个更大元素题目思路1. 单调栈单调栈经典应用 -寻找下一个更大元素的位置,这道题不同的是数组是一个循环数组,也就是下一个更大元素位置也可以在当前元素前面。所以不仅要查看后面的元素,也要查看前面元素,对于循环数组的处理一般是将数组拼接成两份,这样循环数组的每一个值都会在当前元素位置中出现一次。然后算法思路根据单调栈模板就可以实现。代码如下:class Solution { public int[] nextGrea..

2022-02-01 11:49:27 410

原创 [模板总结] - 单调栈

模板题&链接Leetcode 907. Sum of Subarray MinimumsLeetcode 901. Online Stock SpanLeetcode 496. Next Greater ElementLeetcode 503. Next Greater Element IILeetcode 739. Daily TemperaturesLeetcode 239. Sliding Window Maximum单调栈定义是指一个栈内保存的元素满足单调递增

2022-02-01 11:34:36 225

原创 [亚麻高频题] Leetcode 973. K Closest Points to Origin(离原点K个最近的点)

题目描述 & 链接Leetcode 973. K Closest Points to Origin题目思路1. 改写Comparator进行排序这道题目思路比较直观,就是直接对每个点距离进行排序,取TopK个元素,这道题考察Java如何改写比较器。class Solution { public int[][] kClosest(int[][] points, int k) { // comparator 改写 Arrays.sort(po

2022-02-01 11:17:38 5481

原创 [模板总结] - 快速选择 (霍尔Quick Selection)

模板题目 & 链接Leetcode 215 Kth Largest Element 第K大的元素Leetcode 347. Top K Frequent Elements TopK高频元素基本思路:快速选择是快速排序算法的衍生品,当对数组进行partition分组时,实际上就是将比pivot大或者小的分成一组,加入pivot数组在整个数组中是第K大的元素,那么partition后pivot之前就是前K-1大的元素集合,只是顺序不确定。根据这个快速排序partition的性质,可以引出

2022-01-31 12:37:56 703

原创 [模板总结] - 快速排序

模板题&链接Leetcode 912 - 数组排序快速排序思路和归并排序的思想,我们也是通过分治法来实现从局部有序最后全局有序,但是与归并排序不同的是,归并排序先分治出最小子问题(两个单一元素数组归并),先得到最小子问题合并结果然后往上层返回,得到最后合并结果。快速排序分治思路是先通过pivot - 当前数组中一个值作为标杆,将大于放到一边,小于放到一边,我们成为partition, 然后在分治到子问题,将左右两部分继续进行partition。当到达最小子问题时,数组已经是有序。

2022-01-31 12:17:04 424

原创 [亚麻高频题] Leetcode 907. Sum of Subarray Minimums(子数组最小值之和)

题目描述&链接Leetcode 907: 给定一个数组,找到所有子数组最小值,并返回所有最小值之和题目思路1. 暴力枚举直观思路就是通过暴力枚举出所有的子数组,并求所有子数组最小值之和,因为题目子数组是指连续子数组,所有暴力枚举就是枚举起始点和终止点,两层for loop。然后遍历的过程中打擂台保存当前最小值,并求和。直接上代码: public int sumSubarrayMins(int[] arr) { // 暴力求解起点终点 int r.

2022-01-30 08:04:58 1193

原创 [亚麻高频题] Leetcode 140. Word Break II

题目描述&链接Leetcode 140:是Leetcode 139. Word Break进阶版,LC139求得是可行性,这道题求得是所有方案。相似题目Leetcode 139:Word BreakLeetcode 472: Concatenated Words题目思路1.DFS搜索既然要求所有方案就避免不了全局遍历,我们可以依照与LC139类似思路求解,从头遍历来寻找匹配的单词,然后从匹配单词后面的index继续搜索,或者跳过这次匹配就这向下找更长的匹配单词,直...

2022-01-09 13:29:47 458

原创 [亚麻高频题] Leetcode 139. Word Break

题目描述&链接Leetcode 139:判断字典中的字符能否合并成目标字符串 -这道题只用判断可行性。进阶版Word Break II是需要返回所有可能情况。Note:这题确实出的好,让你同时需要考虑算法和优化处理,这道题AC之路着实坎坷,屡屡尝试都TLE了,最后学会了优化解结果去Lintcode上写又TLE,最后终于弄明白最优解。。。相似题目Leetcode 140:Word Break IILeetcode 472: Concatenated Words题目...

2022-01-09 01:53:56 513

原创 [亚麻高频题] Leetcode 1167. Minimum Cost to Connect Sticks

题目描述&链接Leetcode 1167:有一个数组代表一堆木条长度,然后两两合并最后变成一条木头,求最小的cost,这里的cost就是木条长度之和。题目思路这道题相当于就是让我们求这个数组一直加和的最小值,典型的一道比较入门的贪心算法的题目,每一次求和选取当前最小的两个数相加结果一定的最小值。整体思路就是我们维护一个小顶堆,每一次将最上面两个元素出堆进行求和,然后再将求和元素放入堆中,直到堆中只剩一个元素为止。思路比较简单,就直接上代码:public int connect.

2022-01-05 13:03:42 297

原创 [亚麻高频题] Leetcode 1152. Analyze User Website Visit Pattern

题目描述&链接Leetcode 1152:这道题感觉题目说明不是很清楚,一看是看的有点懵,没办法高频题咬着牙还是手撕了一下。题目大概意思是有三个数组,username[]列出一系列用户名字, website[]上面每一个用户浏览的网站, timestamp[]上面用户浏览网站的时间戳,题目有一个pattern=String[3]可以对应三个网站,然后有一个对pattern的评分机制,如果pattern中三个网站被某一个用户按照pattern先后时间顺序曾经都浏览过那么就得1分。最后找出字母序较.

2022-01-05 12:36:49 790

原创 [亚麻高频题] LCP 19. 秋叶收藏集

题目描述&链接Leetcode - LCP 19:寻找能够满足"rrryyyrr"这种形式的最小翻转次数。题目思路与[亚麻高频题] Leetcode.926属于同类型的题目,稍微加了一点难度。1. 前缀和同样可以使用前缀和进行计算,我们维护一个数组记录第i个位置前"r"树叶的总数,并可以通过前缀和求差来求出相应"y"树叶的个数。不同于LC926的01翻转我们这里要维护三个区间::红树叶1;:黄树叶;:红树叶2[0,end]维护"r..yyy..r"格...

2022-01-05 12:15:11 393

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除