自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 message from server: “Host ‘XXXXXX-XXXXXXXX‘ is not allowed to connect to this MySQL server“

ActiveMQ持久化到本地Windows数据库

2022-03-16 14:14:57 1365

原创 解决跨域问题报错When allowCredentials is true, allowedOrigins cannot contain the special value “*“ since tha

解决办法:跨域配置报错,将将.allowedOrigins替换成.allowedOriginPatterns即可。@Configurationpublic class CrosConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { //拿过来粘贴一波,跨域问题就解决了 /** * 意思就是,无

2022-03-11 09:12:07 1282

原创 vue3和axios打起来报错uncaught typeerror: cannot read property ‘use‘ of undefined at...的详细解决方案

本文实乃匠心之作,全程干货,希望能帮到大家。在做springboot整合vue的前后端分离项目时遇到此问题。搜了一下,别人是这样说的:根本原因是 引入的axios库是使用vue2.0开发的一套组件库,而我们当前的项目为vue3,所有存在兼容性的问题。网上的解决方案也都试了一遍,问了前端的小伙伴他也不知道,但是它建议我用vue2再来,我不服,没人踩这坑,我拼了半条命也要给他填了。首先,如果你是简单的项目,axios调用也只有一个弹窗测试,那么你可以这样做。注释掉就可以了,你就会发现可以用。

2022-03-11 09:08:04 2901 1

原创 LeetCode-1047. 删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一 输入:"abbaca" 输出:"ca" 解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。 提示

2021-10-29 21:30:46 112

原创 LeetCode-20 有效的括号

首先要弄清楚,字符串里的括号不匹配有几种情况。先来分析一下 这里有三种不匹配的情况, 第一种情况,字符串里左方向的括号多余了 ,所以不匹配。 第二种情况,括号没有多余,但是 括号的类型没有匹配上。 第三种情况,字符串里右方向的括号多余了,所以不匹配 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false第三种情况:遍历字符

2021-10-29 21:29:03 57

原创 LeetCode-225用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size

2021-10-27 21:34:09 2521

原创 LeetCode-28. 实现 strStr()

实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的..

2021-10-26 21:02:49 69

原创 剑指Offer58-II.左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1: 输入: s = "abcdefg", k = 2 输出: "cdefgab"示例 2: 输入: s = "lrloseumgh", k = 6 输出: "umghlrlose"限制: 1 <= k < s.length <= 10000class Solutio

2021-10-23 21:22:40 80

原创 LeetCode-151 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。示例 1: 输入: "the sky is blue" 输出: "blue is sky the"示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。方法一:使用语言

2021-10-23 21:20:06 174

原创 剑指Offer 05

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy."//使用一个新的对象,复制 str,复制的过程对其判断,是空格则替换,否则直接复制,类似于数组复制class Solution { public String replaceSpace(String s) { if(s==null){ return null; }

2021-10-23 21:19:01 57

原创 According to TLD or attribute directive in tag file, attribute items does not accept any expression

uri给错了要给jsp下的jstl,我给的是箭头上面那个

2021-10-23 10:25:19 62

原创 LeetCode -344 反转字符串Ⅱ

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = "abcdefg", k = 2 输出: "bacdfeg"思路这道题目其实也是模拟,实现题目中规定的反转规则就可以了。一些同学可能为了处理逻辑:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,

2021-10-20 21:20:11 75

原创 哈希表总结

哈希函数是把传入的key映射到符号表的索引上。哈希碰撞处理有多个key映射到相同索引上时的情景,处理碰撞的普遍方式是拉链法和线性探测法。数组作为哈希表242、383set作为哈希表349、202这题中我们给出了什么时候用数组就不行了,需要用set。这道题目没有限制数值的大小,就无法使用数组来做哈希表了。主要因为如下两点: 数组的大小是有限的,受到系统栈空间(不是数据结构的栈)的限制。 如果数组空间够大,但哈希值比较少、特别分散、跨度非常大,使用数组就...

2021-10-19 21:31:20 142

原创 LeetCode-18四数之和

和三数之和一样的双指针class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); for (int i = 0; i < nums.len

2021-10-19 21:26:29 68

原创 LeetCode -15 三数之和

首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i] b = nums[left] c = nums[right]。接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应

2021-10-19 21:26:00 88

原创 LeetCode-383 赎金信

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母这道题目和242.有效的字母异位词 (opens new window)很像,24..

2021-10-17 21:27:11 101

原创 LeetCode- 454 四数相加Ⅱ

给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0本题咋眼一看好像和0015.三数之和,0018.四数之和差不多,其实差很多 本题是使用哈希法的经典题目,而0015.三数之和,0018.四数之和并不合适使用哈希法,因为三数之和和四数之和这两道题目使用哈希法在不超

2021-10-17 21:26:20 79

原创 LeetCode-202 快乐数

编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很

2021-10-14 21:32:23 68

原创 LeetCode-349 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。注意题目特意说明:输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序用数组来做哈希表也是不错的选择,但是要注意,使用数组来做哈希的题目,是因为题目都限制了数值的大小。而这道题目没有限制数值的大小,就无法使用数组来做哈希表了。而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。有同学可能问了,遇到哈希问题我直接都用set不就得了,用什么数组啊。直接使用set 不仅占用空间比数组.

2021-10-14 21:31:48 96

原创 LeetCode -242 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: false说明: 你可以假设字符串只包含小写字母先看暴力的解法,两层for循环,同时还要记录字符是否重复出现,很明显时间复杂度是 O(n^2)。数组其实就是一个简单哈希表,而且这道题目中字符串只有小写字符,那么就可以...

2021-10-13 21:27:35 67

原创 链表刷题总结

链表的理论基础:代码随想录链表的基本操作:获取链表第index个节点的数值 在链表的最前面插入一个节点 在链表的最后面插入一个节点 在链表第index个节点前面插入一个节点 删除链表的第index个节点的数值设置一个虚拟头结点,这样原链表的所有节点就都可以按照统一的方式进行移除了。考察链表的操作其实就是考察指针的操作...

2021-10-13 21:20:11 72

原创 LeetCode -24两两交换链表中的结点

这里是重点,理解了就会写第一遍写出来跑死循环,每一行仔细检查后发现,是暂存的地方错了head.next.next 写成prev.next.nextclass Solution { public ListNode swapPairs(ListNode head) { ListNode vNode = new ListNode(0); vNode.next =head; ListNode prev = vNode; .

2021-10-12 21:22:05 42

原创 LeetCode -203 移除链表元素

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; }...

2021-10-12 21:21:28 33

原创 LeetCode-59 螺旋矩阵Ⅱ

模拟顺时针画矩阵的过程: 填充上行从左到右 填充右列从上到下 填充下行从右到左 填充左列从下到上 按照左开右闭原则class Solution { public int[][] generateMatrix(int n) { int[][] res = new int[n][n];//创建数组 //每一轮的起始坐标 int startX=0,startY=0; int loop...

2021-10-09 20:53:06 59

原创 数组刷题总结

1.二分法:例:LeetCode-704暴力n->二分logn二分法是算法面试中的常考题,建议通过这道题目,锻炼自己手撕二分的能力2.双指针法例:LeetCode-27 移除元素双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。3. 滑动窗口例:LeetCode-209长度最小的子数组滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。4.模拟行为Lee

2021-10-09 20:52:10 122

原创 LeetCode-209 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0方法一:暴力解法这道题目暴力解法当然是 两个for循环,然后不断的寻找符合条件的子序列,时间复杂度很明显是O(n^2)方法二:滑动窗口class Solution { // 滑动窗口 public int minSu

2021-10-08 21:25:04 66

原创 LeetCode-27 移除元素

解法一:暴力两个循环给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素方法二:双指针(快慢指针)通过一个快指针和慢指针class Solution { public int removeElement(int[] nums, int val) { //双指针

2021-10-08 21:24:09 43

原创 LeetCode-70 爬楼梯

方法一:可以发现规律f(x) = f(x-)+f(x-2)所以给定初始值然后直接采用递归方式就可以求出解方法二:使用记忆化递归,因为方法一其实是计算了很多重复的方法三:动态规划class Solution { public int climbStairs(int n) { if(n==1){ return 1; } int[] dp = new int[n+1]; dp[1] =1;

2021-10-07 21:35:45 51

原创 LeetCode-191 位1的个数

方法一:循环检查每一个二进制位编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int res = 0; //int 32位,根2的i次方进行按位与,只有第i位是1结果才不是0 fo

2021-10-07 21:35:06 38

原创 LeetCode-231 2的幂

位运算的一道简单题一个数 n 是 2 的幂,当且仅当 nn 是正整数,并且 n 的二进制表示中仅包含 1 个 1。因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 0即可技巧1:如果 n是正整数并且 n & (n - 1) = 0,那么 n 就是 22的幂,因为n & (n - 1) = 0可以将最低位的1给移除技巧2:如果n&(-n) = n ,那n就是2的幂class Solution {

2021-10-07 21:34:17 53

原创 LeetCode-46 全排列

给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> res = new ArrayList<List<Integer>>(); List<Integer> ou...

2021-10-05 21:15:10 47

原创 LeetCode-994 腐烂的橘子

在给定的网格中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。没写出恢复橘子坐标以及相关的,就卡死了去看题解,感觉广度优先搜索还是没有非常会。可能刷的还不够多,写不全,写的差不多了就忘了改 写什么或者漏掉了。这个是别人的题解,非常好,每个地方都还有注解,就很好懂。class So...

2021-10-04 21:23:40 69

原创 LeetCode-190 颠倒二进制位

看题解懂的public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int res = 0; for (int i = 0; i < 32; i++) { //res先往左移一位,把最后一个位置空出来, //用来存放n的最后一位数字 res

2021-10-02 20:28:07 31

原创 LeetCode206-反转链表

迭代class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null,curr,next; curr = head; while(curr != null){ next = curr.next; curr.next = prev; prev = curr; curr = next;

2021-10-02 20:27:36 34

原创 LeetCode-21. 合并两个有序链表

没写出来542 就写了一个简单题将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]class Solution { //递归应该可以解决 public...

2021-09-30 21:30:16 34

原创 LeetCode-116 填充每个结点的下一个右侧结点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间

2021-09-29 21:34:39 62

原创 LeetCode-695、617(广度优先)

LeetCode-695深度优先搜索 + 栈算法:我们可以用栈来实现深度优先搜索算法。这种方法本质与方法一相同,唯一的区别是:方法一通过函数的调用来表示接下来想要遍历哪些土地,让下一层函数来访问这些土地。而方法二把接下来想要遍历的土地放在栈里,然后在取出这些土地的时候访问它们。访问每一片土地时,我们将对围绕它四个方向进行探索,找到还未访问的土地,加入到栈 stack 中;另外,只要栈 stack 不为空,就说明我们还有土地待访问,那么就从栈中取出一个元素并访问。class.

2021-09-28 19:56:58 63

原创 LeetCode -617 合并二叉树

方法一:深度优先搜索可以使用深度优先搜索合并两个二叉树。从根节点开始同时遍历两个二叉树,并将对应的节点进行合并。两个二叉树的对应节点可能存在以下三种情况,对于每种情况使用不同的合并方式。如果两个二叉树的对应节点都为空,则合并后的二叉树的对应节点也为空;如果两个二叉树的对应节点只有一个为空,则合并后的二叉树的对应节点为其中的非空节点;如果两个二叉树的对应节点都不为空,则合并后的二叉树的对应节点的值为两个二叉树的对应节点的值之和,此时需要显性合并两个节点。对一个节点进行合并之后,还要对该

2021-09-27 21:18:42 56

原创 LeetCode-695 岛屿的最大面积

这题的深度优先+栈以及广度优先还未学给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0如果进行递归写法时,最重要的是递归边界及其处理方式,也就是说我们这个递归会到达哪个递归边界 ,到..

2021-09-27 21:17:57 33

原创 LeetCode-733 图像渲染

一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。最后返回经过上色渲染后

2021-09-27 21:15:24 73

空空如也

空空如也

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

TA关注的人

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