自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot中利用拦截器检查登录状态(升级)

文章目录1.前言2.使用拦截器2.1.自定义注解1.前言我的上一篇博客写了使用拦截器来去检查登录的状态然后给用户显示不同的界面,但是这样还是有问题,虽然用户看不见哪些信息,但是如果我们知道访问路径,照样可以访问到我们没登录时看不到的界面,那么这样就有大问题了,因为,很有可能会有人能通过这些界面影响我们的数据库,这样的话就带来了安全隐患。文字可能不太清楚,上图就明白了。如下图所示,是我们没登录时看到的界面但是我们可以通过更改路径访问到我们的个人中心如下图这就很诡异了,明明我们就没有这个按钮,

2020-11-24 14:46:26 518

原创 springboot项目中拦截器的应用

拦截器1.应用场景2.应用3.案例4.登录案例(后台代码)5.登录案例(前台代码)1.应用场景这个拦截器其实和面向切面编程的思想很像,主要用来处理一些公共的可复用的一些请求,这些东西每次都实现很麻烦,所有我们直接将其用拦截器编写会方便很多。2.应用springboot中提供了HandlerInterceptor接口,里面提供了三个方法public interface HandlerInterceptor { default boolean preHandle(HttpServlet

2020-11-23 10:31:54 367

原创 Springboot项目中利用kaptcha完成生成验证码的功能

验证码功能1.导入依赖2.编写kaptcha配置类3.在对应的LoginController中增加使用的方法4.修改对应的前端代码5.实现效果图1.导入依赖直接上官网即可,如下图2.编写kaptcha配置类编写KaptchaConfig类进行配置代码:package com.nowcoder.community.config;import com.google.code.kaptcha.Producer;import com.google.code.kaptcha.impl.De

2020-11-22 14:02:16 329

原创 Leetcode Java 每日一题 ------- 242.有效的字母异位词

有效的字母异位词1.题目描述2.题目示例3.思路及代码1.题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。2.题目示例3.思路及代码思路一:利用hashmap,暴力求解代码:class Solution { public boolean isAnagram(String s, String t) { //长度不一样直接返回false if(s.length() != t.length()){

2020-11-22 10:02:42 169

原创 快速学会如何利用springboot进行邮件的发送

利用springboot实现邮箱功能1.导入依赖2.配置application.properties3.编写邮件发送工具类MailClient4.编写测试类5.注意:使用html文本时要编写对应的thymeleaf模板6.测试结果1.导入依赖去官网导(https://mvnrepository.com/)入依赖即可,如下图如下,这个版本号可以不用写<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring

2020-11-21 13:35:32 1186

原创 力扣刷题 ------ 283.移动零

移动零1.题目描述2.题目示例3.思路及代码1.题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。2.题目示例3.思路及代码思路:首先这个题无非就是交换的过程,我们可以不考虑零的情况,这里给出两种写法,一种非常好理解,一种只是合起来代码:class Solution { public void moveZeroes(int[] nums) { //求零个数 int count = 0;

2020-11-19 15:02:41 119

原创 Java Nowcoder ----- 合并两个排序的链表

合并两个排序的链表1.题目描述2.题目示例3.思路及代码1.题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。2.题目示例3.思路及代码思路一:迭代1.找出两个链表中先取出的节点2.放入新链表中代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;

2020-11-18 17:12:32 138

原创 Java leetcode ------- 559.N叉树的最大深度

N叉树的最大深度1.题目描述2.题目示例3.思路及代码1.题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。2.题目示例3.思路及代码思路:和求二叉树的最大深度是一样的,不过用到的不是root.left, root.right, 而是root.children代码:/*// Definition for a Node.class Node { public int val; public List<Nod

2020-11-18 12:57:21 209

原创 Java Leetcode ------- 922.按奇偶排序数组II

按奇偶排序数组II1.题目描述2.题目示例3.思路及代码1.题目描述给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。2.题目示例示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length <= 20000

2020-11-12 22:39:46 221

原创 Java Nowcoder ------ 把数组排成最小的数

把数组排成最小的数1.题目描述2.题目示例3.思路及代码1.题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。2.题目示例例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。3.思路及代码思路:利用排序思想代码:import java.util.*;public class Solution { public String PrintMinNumber(int [] numbers) {

2020-11-09 22:31:58 126

原创 Java leetcode ------ 找出数组中的幸运数

找出数组中的幸运数1.题目描述2.题目示例3.思路及代码1.题目描述在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,请你从中找出并返回一个幸运数。如果数组中存在多个幸运数,只需返回 最大 的那个。 如果数组中不含幸运数,则返回 -1。2.题目示例3.思路及代码思路一:利用计数排序思路二:利用hashmap代码实现(两个)class Solution { public int findLucky(int[]

2020-11-07 21:54:43 303

原创 Java 力扣 ------ 根据数字二进制下1 的数目排序

根据数字二进制下1 的数目排序1.题目描述2.题目示例3.思路及代码1.题目描述给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。2.题目示例3.思路及代码思路:根据api中的方法可以计算出二进制中1的个数代码:class Solution { public int[] sortByBits(int[] arr) { i

2020-11-06 23:36:45 162 2

原创 Nowcoder ---矩形覆盖

矩形覆盖1.题目描述2.题目示例3.思路及代码1.题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?2.题目示例3.思路及代码思路:这其实是一个简单的动态规划,规律符合斐波拉契数列的性质代码:public class Solution { public int RectCover(int target) { if(target < 2){ retur

2020-11-04 19:36:36 130

原创 Nowcoder ---- 重建二叉树

重建二叉树1.题目描述2.题目示例3.思路及代码1.题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.题目示例3.思路及代码思路:递归根据前序找到根节点根据根节点在中序中找到左右子树依此递归即可代码:/** * Definition for binary tree * pu

2020-11-03 19:46:42 179

原创 Nowcoder ----- 从尾到头打印链表(多种解法)

从尾到头打印链表1.题目描述2.题目示例3.思路及代码1.题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。2.题目示例3.思路及代码思路一:利用栈先进后出的性质,就可以实现反转的效果代码:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = va

2020-11-03 13:50:22 141

原创 Nowcoder----替换空格

替换空格1.题目描述2.题目示例3.思路及代码1.题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。2.题目示例例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。3.思路及代码思路:先找出空格个数,设置新的字符串的长度然后从后往前遍历进行替换即可代码:public class Solution { public String replaceSpace(StringBuffer str) {

2020-11-03 11:41:54 124

原创 力扣Java----- 941.有效的山脉数组

有效的山脉数组1.题目描述2.题目示例3.思路及代码1.题目描述给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < …A[i-1] < A[i]A[i] > A[i+1] > … > A[A.length - 1]。2

2020-11-03 10:58:07 216

原创 Nowcoder ------ 数组中出现次数超过一半的数字(三种解法)

数组中出现次数超过一半的数字1.题目描述2.题目示例3.思路及代码1.题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。2.题目示例3.思路及代码思路一:利用map,存放的时候就进行一次判断即可import java.util.*;public class Solution { public int MoreT

2020-11-02 11:10:36 173

原创 Java 力扣-----两个数组的交集

两个数组的交集1.题目描述2.题目示例3.思路及代码1.题目描述给定两个数组,编写一个函数来计算它们的交集。2.题目示例3.思路及代码思路:通过set去重,list往里加,最后转为数组即可代码:class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set = new HashSet<>(); for(int

2020-11-02 10:27:22 179

原创 Nowcoder ------- 调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面1.题目描述2.题目示例3.思路及代码1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2.题目示例给定数组为:[1,2,3,4,5,6]输出为:[1,3,5,2,4,6]3.思路及代码思路一:利用额外的空间代码:public class Solution { public void reOrderArray(i

2020-11-01 22:32:33 118

原创 Nowcoder ------- 旋转数组的最小数字

旋转数组的最小数字1.题目描述2.题目示例3.思路及代码1.题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2.题目示例3.思路及代码思路一:暴力循环即可思路二:利用有序的性质,二分查找,在最坏的情况使用线性探测(但是好像用例中没有这种用例)代码:import java.util.ArrayList;public class Sol

2020-11-01 21:59:30 728

原创 Nowcoder -----二维数组中的查找

二维数组中的查找ps:查找的本质是排除的过程1.题目描述2.题目示例3.思路及代码ps:查找的本质是排除的过程1.题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2.题目示例3.思路及代码思路一:暴力,逐个排除思路二:一次排除一行或者一列,根据题目所给的数组的性质代码:暴力代码省略public class Solution {

2020-11-01 21:22:43 162

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

左旋转字符串1.题目描述2.题目示例3.思路及代码1.题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。2.题目示例3.思路及代码思路一:三次旋转即可1.先反转前n项2.反转后n项3.整体反转代码:class Solution { public String reverseLeftWords(String

2020-11-01 13:40:52 162 2

原创 leetcode 力扣刷题----二叉树的深度

剑指offer55.I.二叉树的深度1.题目描述2.题目示例3.思路及代码1.题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。2.题目示例3.思路及代码思路:递归代码:class Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; }

2020-10-30 19:26:04 204

原创 Leetcode每日打卡------129.求根到叶子节点数字之和

求根到叶子节点数字之和1.题目描述2.题目示例3.思路及代码1.题目描述给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。2.题目示例3.思路及代码思路:递归,直接看代码,简单易懂代码:/** * Definition for a binary tree node. * public

2020-10-29 09:43:49 75

原创 力扣刷题----独一无二的出现次数

1207.独一无二的出现次数1.题目描述2.题目示例3.思路及代码1.题目描述给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。2.题目示例3.思路及代码思路:将元素的出现次数放进map中,最后将其值集合放入set中,比较二者的size即可代码:class Solution { public boolean uniqueOccurrences(int[] arr) { M

2020-10-28 14:08:51 88

原创 Leetcode 刷题-----144.二叉树的前序遍历(递归+迭代)

144.二叉树的前序遍历1.题目描述2.题目示例3.思路及代码1.题目描述给定一个二叉树,返回它的 前序 遍历。2.题目示例进阶:使用迭代3.思路及代码思路:根据根->左->右的顺序来即可递归:代码:class Solution { List<Integer> list = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode roo

2020-10-27 12:31:39 193

原创 Leetcode 刷题 ------1365.有多少小于当前数字的数字

1365.有多少小于当前数字的数字1.题目描述2.题目示例3.思路及代码1.题目描述给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案2.题目示例3.思路及代码思路一:暴力求解代码:class Solution { public int[] smallerNumbe

2020-10-26 21:27:32 139

原创 力扣第212场周赛前两题题解(暴力易懂)

第212场周赛T1.5546.按键持续时间最长的键1.题目描述2.题目示例3.思路及代码T2.5547.等差子数组1.题目描述2.题目示例3.思路及代码T1.5546.按键持续时间最长的键1.题目描述LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i个被按下的键。releaseTimes 是一个升序排列的列表,其中 release

2020-10-25 19:01:30 376

原创 力扣刷题打卡-----链表中倒数第k个节点

剑指offer22.链表中倒数第k个节点1.题目描述2.题目示例3.思路及代码4.运行结果1.题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。2.题目示例给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.3.思路及代码思路:快慢指针

2020-10-24 20:06:03 215

原创 力扣刷题打卡 ---- 234.回文链表

234.回文链表1.题目描述2.题目示例3.思路及代码1.题目描述请判断一个链表是否为回文链表。2.题目示例3.思路及代码思路一:暴力思路,先遍历,然后加入数组,最后双指针判断即可,效率很低代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } *

2020-10-23 12:16:30 192

原创 leetcode 力扣刷题------925.长按键入

文章目录925.长按键入1.题目描述2.题目示例3.思路及代码925.长按键入1.题目描述你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。这个题我觉得非常有意思,巧妙的利用了双指针,并且在边界条件上做了很多的处理,对逻辑能力的训练挺好的。2.题目示例3.思路及代码思路:双指针,一个i指向na

2020-10-21 10:06:42 234

原创 leetcode力扣刷题------反转链表

206.反转链表1.题目描述反转一个单链表。2.题目示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?3.思路及代码思路一:迭代,三指针法代码:/** * Definition for singly-linked list. * public class ListNode { * int va

2020-10-20 22:50:24 208

原创 自定义顺序表ArrayList-------附代码

文章目录自定义ArrayList(简单易懂)1.MyArrayList类2.测试类MyArrayListTest3.运行结果自定义ArrayList(简单易懂)1.MyArrayList类package MyArrayListDemo;public class MyArrayList { //定义数组 public int[] elem; //定义真实大小 public int usedSize; //无参构造,如果不传参,默认初始容量为10 pub

2020-10-19 23:05:56 233

原创 力扣打卡刷题-------844.比较含退格的字符串多种解法

文章目录844.比较含退格的字符串1.题目描述2.题目示例3.思路及代码844.比较含退格的字符串1.题目描述给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。2.题目示例进阶:你可以用 O(N) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?3.思路及代码(非进阶易懂)思路一:利用StringBuilder,每次append时检查,如果有退格,那么就删

2020-10-19 15:44:32 135

原创 奇安信笔试题-----编程题记录

T1.求m*n网格路径和的最大值1.题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最大。说明:每次只能向下或者向右移动一步。2.题目示例{{2,3,1},{2,5,3},{4,2,1}}返回143.思路及代码思路:简单动规思想,分为几种情况分开讨论即可。1.当为上边界,它只能由它的左边的元素得到值2.当为左边界,它只能由它的上边的元素得到值3.当处于中间时,它要从它的上边和左边选择最大的最后返回最后一个元素即可,

2020-10-18 18:28:16 888 4

原创 力扣打卡-----剑指offer.04.二维数组中的查找 + 整数的各位积和之差

文章目录T1.二维数组中的查找1.题目描述2.题目示例3.思路及代码T3.整数的各位积和之差1.题目描述2.题目示例3.思路及代码T1.二维数组中的查找1.题目描述在一个 n * m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2.题目示例3.思路及代码思路一:直接暴力双循环即可代码:class Solution { public boolean findNu

2020-10-17 23:37:27 112

原创 力扣刷题打卡------977.有序数组的平方

文章目录977.有序数组的平方1.题目描述2.题目示例3.思路及代码977.有序数组的平方1.题目描述给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。2.题目示例示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示1 <= A.length <= 1000010000 <= A[i] <= 1

2020-10-16 22:47:09 224

原创 力扣刷题-----1295.统计位数为偶数的数字

文章目录统计位数为偶数的数字1.题目描述2.题目示例3.思路及代码统计位数为偶数的数字1.题目描述给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。2.题目示例示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数) 6 是 1 位数字 位数为奇数) 7896 是 4 位数字(位数为偶数) 因此只有 12 和 7896 是位数

2020-10-15 23:39:11 179

原创 力扣刷题-----1576.替换所有的问号

文章目录替换所有的问号1.题目描述2.题目示例3.思路及代码替换所有的问号1.题目描述给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。2.题目示例示例 1:

2020-10-14 20:55:41 333

空空如也

空空如也

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

TA关注的人

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