- 博客(38)
- 收藏
- 关注
原创 【Java】Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘jwt.token.expira
报错信息2024-02-18 01:35:56.979 ERROR 24072 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.schedulin
2024-02-18 01:44:23
750
原创 数组中的第k大数字
时间复杂度和空间复杂度击败了80%的人!看到题目,有些同学就想问:哎!这道题不是很简单嘛,排序一下再数组寻找坐标不就完事儿了嘛这么想就不对了哦,因为我们只需要求第k大的数字,而排序是把每个数字都排序,所以直接对数组进行排序的话时间复杂度就会很高思路:这里用的是堆排序,首先把数组变成大顶堆数组(把数组看成一个堆,依次根据数组下标排成二叉树,再对二叉树进行大顶堆化,这样这个数组就是一个大顶堆啦),变成之后,数组第一个位置就是最大的位置,我们把这个位置和数组最后一个位置进行交换,再对第一个位置进行大顶堆.
2022-05-18 10:57:14
194
原创 JVM中堆和方法区——简要理解
因为之前一直不理解堆存的对象和方法区存的对象到底有啥差别,这里就来说一下今天浅薄的理解堆当我们创建一个对象时,比如People p=new People();p内存就会被存在堆当中,p就是指向对内存中的引用方法区是类的字节码文件(Class)的信息,是信息,不是内存哦比如这些源文件:...
2022-05-06 19:23:24
193
原创 组合总和2
击败了99%的男人!!题目如下代码如下public List<List<Integer>> combinationSum2(int[] candidates, int target){ List<List<Integer>> list1=new ArrayList<>(); List<Integer> list2=new ArrayList<>(); Arr.
2022-05-05 10:58:14
253
原创 linux下编译打包时[WARNING] Failed to create parent directories for tracking file
当时操作系统是ubuntu,所以很多文件没有权限,这时候需要给你的maven本地仓库一个权限chmod 777 /home/maven/repo搞定~
2022-04-20 18:22:35
1440
原创 Linux下增加用户权限
行不通1:有些同学用vi /etc/sudoers修改文件内容,但是会发现只有读的权限行不通2:又有些同学增加了**/etc/sudoers**的“写”权限,但是这样有时候又会出错行得通:用visudo可以直接到达/etc/sudoers,安全修改,你值得拥有~...
2022-04-19 17:02:20
397
原创 Docker镜像加速-配置阿里云镜像仓库
Docker默认远程仓库是https://hub.docker.com/比如我们下载一个大点的东西,龟速由于是国外主机,类似Maven仓库,慢得一腿,经常延迟,破损;所以我们一般都是配置国内镜像,比如阿里云,网易云等;推荐阿里云,稳定点;配置步骤如下1.登录进入阿里云镜像服务中心,获取镜像地址以下命令可能会用到sudo加强权限2.sudo vim /etc/docker/daemon.json在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
2022-03-27 01:04:44
1699
原创 数据库SQL基本操作语言
数据库数据库基本操作DDL查看数据库 show databases;创建数据库 create database itcast;create database itcast if not exists;删除数据库create database [if exists] 数据库名使用 use 数据库名查看当前数据库select database();查询当前数据库所有表show tables;查询表结构desc 表名查询指定表的建表语句show create ta
2022-03-23 16:57:03
1037
原创 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。思路:滑动窗口,先判断初始窗口大小,即从0到i的数之和大于等于目标数target,之后便滑动,剪头加尾,然后在遍历滑动窗口,缩小到最小值,以此类推,代码如下:class Solution { public int minSubArrayLe
2022-03-20 16:55:24
59
原创 搜索二维矩阵(击败百分百
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。思路:把二维矩阵的坐标转化为一维坐标,进行二分搜索判断,再转化为所在二维数组代码如下:class Solution { public boolean searchMatrix(int[][] matrix, int target) { return binarySearch(matrix,target,0,0,ma
2022-03-19 21:46:14
76
原创 从中序与后序遍历序列构造二叉树(炫酷版
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。思路:后序二叉树的规则,左右根,因此后序数组的最后一个数就是根,所以我们直接创造根结点就行,在利用剩余数组创造子节点,因为给的函数参数只有两个数组,所以我们需要再创造一个带有其他参数的函数,这些参数能够代表分别两个数组的起始位置,即从哪到哪是中序或者后序class Solution { public TreeNode b
2022-03-18 16:50:00
100
原创 组合总和||
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。思路:进入回溯函数,对该数进行for循环,依次遍历,判断是否符合条件重点:有样例会导致超时,如下所以要加入这一句话具体代码:class Solution { List<List<Integer>> list1=new
2022-03-18 15:28:58
50
原创 跳跃游戏(优化
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。思路:找能走到最远的一步。`class Solution { public int jump(int[] nums) { if(nums.length==1) return 0; return jump1(nums,0); } public
2022-03-15 18:22:17
3888
原创 螺旋矩阵(击败百分之百,就硬转
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list=new LinkedList<>(); int len1=matrix.length; int len2=matrix[0].length;
2022-03-15 17:19:52
70
原创 单词搜索(暴力
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。思路:用了最笨的方法,二层遍历,第一遍历每一个字母,第二从这个字母出发依次找到单词中对应顺序的数,这里新建一个二元数组为了标记是否到达过。class Solution { public boolean
2022-03-15 15:37:37
88
原创 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。比如:给nums[]={1,2,3,5,6,7,8};就得输出4;因为(5,6,7,8)思路1:用数组先排序,然后判断下一位是否大1,但是时间复杂度高,不为O(n) int len=nums.length; if(len==0) return 0; Arrays.sort(nums);
2022-03-13 13:58:18
106
原创 电话号码的字符组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。思路:利用哈希表和回溯,其实数组也可以class Solution { public List<String> letterCombinations(String digits) { List<String> list=new LinkedList<>(); if
2022-03-13 11:16:35
541
原创 求根节点到叶节点数字之和(递归
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。思路:把节点上的值乘以加到孩子节点当中,当节点没有孩子时,便输出该节点的值class Solution { public int sumNumbers(TreeNode root) {
2022-03-12 20:11:59
110
原创 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。思路:最近公共祖先的条件有两种一:该节点左右子树分别都含有p,q二:给节点等于q或p,并且它至少有一颗子树有p或q代码如下:class Solution { public TreeNode lowestCommonAncestor(TreeNod
2022-03-12 19:10:59
433
原创 二叉树的层序遍历(队列
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。思路:利用队列对二叉树进行层序遍历,每一次遍历需要记录下队列的size大小,以便于记下每一层的节点,输出。class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> queue=new LinkedList<
2022-03-12 14:02:44
1994
原创 不同的二叉搜索树(动态规划
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。思路:动态规划,比如说有n个节点,每个节点当头节点时的总和,便是所有的不同的二叉树。比如i节点当头节点时,便可以分为左右子树,分别是i-1和n-i。因为n=0,n=1时,他们都只有一种情况,所以G[0]=1;G[1]=1;G[n]便是有n个节点的所有不同二叉树总和。代码如下:class Solution { public int numTrees(int n
2022-03-12 11:29:51
1101
原创 leetcode:反转链表
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。思路:通过计数来找到需要反转的链表左右两侧的节点,反转所需区间,再连接头尾便可只不过处理首位的时候需要考虑特殊情况class Solution { public ListNode reverseBetween(ListNode head, int left, int right) { L
2022-03-11 22:23:33
59
原创 leetcode:分割链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。思路:遍历链表,用两个栈分别存入大于等于x和小于x的值(比较粗糙的方法class Solution { public ListNode partition(ListNode head, int x) { Deque<Integer> q1=new LinkedList<>
2022-03-11 21:36:24
260
原创 leetcode:两数相加||
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。思路:因为它是从高位数开始数,我们一般算术从个位数开始加,所以我们需要用栈的数据结构来解决这个问题class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { Deque<Integer> d1
2022-03-11 19:45:39
72
原创 leetcode:两两交换链表中的节点
思路:请细看代码class Solution { public ListNode swapPairs(ListNode head) { if(head==null) return null; ListNode temp=head; if(head.next!=null) head=temp.next; ListNode temp1=null; ListNode temp2=null; .
2022-03-11 16:34:40
52
原创 leetcode:最接近的三数之和
思路:同样是采用前篇文章一样的思想对数组进行两次遍历,时间复杂度只有O(N2)。class Solution { public int threeSumClosest(int[] nums, int target) { int temp; int len=nums.length; int flag=0; Arrays.sort(nums); temp=target-nums[0]-nums[1]-nums[2]; .
2022-03-11 15:02:16
62
原创 leetcode:三数之和
思路1:把数组从小到大排列,常规三重循环,但是它的时间复杂度是O(N3),leetcode判断会超时思路2:把数组从小到大排列,我们定义数组三个位置:first,second,third。第一层循环:first第二层循环:second和third双向移动,分别在左侧和右侧依次靠近因为a+b+c=0,我们无需在第二层循环中遍历N2(N的平方),只需要把第二层循环遍历一次,当second和third相遇,便结束循环。因此,时间复杂度为O(N2)。class Solution { public.
2022-03-11 11:22:04
169
原创 剑指offer:从上到下打印二叉树
采用集合、队列和层序遍历的方法class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> q=new LinkedList<>(); List<List<Integer>> list1=new LinkedList<>(); if(root!=nu.
2022-03-07 10:53:06
495
原创 剑指offer:二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。class Solution { Node pre,head; public Node treeToDoublyList(Node root) { if(root==null) return null; dfs(root); pre.right=head; head.left=pre; .
2022-03-06 23:20:34
120
原创 剑指offer:二叉树中和位某一值的路径
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。思路:递归,利用左中右的思路,一次遍历从左中右,判断是否满足条件路径和等于targetclass Solution { List<List<Integer>> list1; List<Integer> list2; public List<List<Integer>> p.
2022-03-06 23:16:37
236
原创 剑指offer:二叉搜索树的后序遍历序列-通俗易懂版
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。思路递归:利用数组最后一个数字是头节点。再把数组分为两个数组依次递归class Solution { public boolean verifyPostorder(int[] postorder) { int len=postorder.length; if(len<3) return true; .
2022-03-06 23:12:19
362
原创 怎么从一个除了一个数只有一个,其他数都有两个的数组里提取出这个数--来自LeetCode136只出现一次的数字
怎么从一个除了一个数只有一位,其他数都是两位的数组里提取出这个数字–来自LeetCode136只出现一次的数字思路1一开始想的思路,比较简单,但是空间时间复杂度比较复杂就是把整个数组排序,由小到大或者由大到小然后开始遍历,如果一个数和它后面一个数不同,则直接提取代码如下:class Solution { public int singleNumber(int[] nums) { for(int i=0;i<nums.length-1;i++){
2021-06-03 15:01:28
99
原创 二叉树的路经总和——来自Leetcode112
二叉树的路经总和-来自Leetcode112路径总和,给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。路径总和,给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。来源:力扣(LeetCode)class So
2021-05-09 12:41:13
252
原创 Win下用scp远程传送文件到Linux系统-服务器开发基础
Win下用scp远程传送文件到Linux系统scp 本地文件路径 username@ip地址:/想要传送到目的地文件路径如下:
2020-11-11 09:15:56
313
原创 java-awt.frame 如何点右上角叉×关闭
话不多说直接上代码import java.awt.*;import java.awt.color.*;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.swing.*;public class LoginF extends JFrame{ LoginF()//构造方法...
2020-04-14 18:42:51
2031
原创 java-四人发牌-面向对象(无大王小王)
采用面向对象的方式编写一个发牌游戏。四名牌手打牌,电脑随机將52张牌(不含大、小王)发给四名牌手,并在屏幕上显示每位牌手的牌。//提示:设计出三个类: Card类(代表每一张扑克)、Player类(代表每一位选手)和Poke类(代表一副牌)
2020-03-26 15:04:38
1319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人