自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 资源 (1)
  • 收藏
  • 关注

原创 记录一次HTTP调用方式

后续在开发过程中,可以引入hutool,通过使用HttpUtil的Get和Post方法,可以很方便的发起http方法调用,而不用担心资源释放情况。所以这种方式,是非常推荐的写法。

2023-05-21 21:45:26 257

原创 开放API网关的实践

随着业务发展,系统索要对接的第三方会越来越多,那么如何让第三方快速安全的接入,就会成为各业务系统面临的问题。设计一个具备鉴权、限流、熔断等功能的API网关就显得至关重要,本文的文章目录如下。

2023-04-09 16:45:37 750

原创 适配器模式的原理和应用

将一个类的接口转换成客户期望的另一个接口。

2023-04-05 16:24:08 447

原创 设计模式之命令模式和中介者模式

定义:将“请求”封装成对象,以便使用不同的请求特点:● 命令模式解决了应用程序中对象的职责以及它们之间的通信方式问题● 能够实现命令发送者和接受者之间的解耦类型:行为型适用场景:● 请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交互● 需要抽象出等待执行的行为优点:● 降低耦合● 容易扩展新命令或者一组命令缺点:● 命令的无限扩展会增加类的数量,提高系统实现复杂度。命令接口实体类具体命令实现类一具体命令实现类二员工类(命令的执行者)测试类Coding体会:命令模

2023-03-26 10:12:38 468

原创 模板方法模式+责任链模式

模板方法模式和责任链模式的应用

2023-03-19 17:40:21 487

原创 MySQL-分库分表方案

常用的MySQL分库分表方案以及常用中间件都有哪些?

2023-03-19 17:35:17 1581

原创 今日算法:二维数组中的查找+替换空格+从尾到头打印链表

基本算法

2023-03-12 21:58:59 263

原创 那些开发过程中需要遵守的开发规范

产研需要遵循的开发规范

2023-02-24 19:31:36 827

原创 最长不含重复字符的子字符串

最长不含重复字符的子字符串问题

2023-02-20 18:03:48 458

原创 微服务中API网关的作用是什么?

API网关的作用?

2023-02-13 20:46:19 2323 4

原创 滑动窗口的最大值问题

滑动窗口最大值问题

2023-02-04 20:32:01 947

原创 一次JVM垃圾收集全过程

JVM垃圾收集过程详解

2023-01-31 17:36:12 332

原创 【项目启动】IDEA新建项目同步到Github

IDEA项目代码同步到远程GitHub

2023-01-03 10:21:27 654 1

原创 剑指Offer55-二叉树的深度 讲解

两种方式解决二叉树深度问题

2022-12-09 13:06:35 80

转载 只有不断的学习才能收获成长

转自知乎李苦李大佬。25岁那年,我从京东离职,入职百度。在百度认识了当时的架构师久哥(T9级别),因为他的一番话,彻底改变了我的职业生涯,短短三年的时间,我从一枚普通程序员成长为别人眼中的技术大咖。当时因为业务需要,也承蒙久哥照顾,他跟我说过这样一段话:他问,“如果用5年的时间学习数据库,你能不能成为这个领域的专家?”我说,“应该可以吧”他说,“你现在25,5年后也才30,30岁就能成为某个领域的专家,为什么不去做呢?你看看周围有多少30岁的人还一事无成,而那个时候的你已经是数据库专家了。”当

2021-01-23 15:52:37 444

原创 【每日一题】移除元素

题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例2给定 nums = [0,1,2,2,3,0,

2020-11-01 22:40:43 238

原创 【每日一题】将有序数组转换为二叉搜索树

题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例思路二叉搜索树的中序遍历序列是升序序列。我们可以取数组中的中间位置作为根节点,然后递归地设置这个节点的左节点和右节点,左节点是从左端点(left)到中间点(mid)-1的数组的中间节点;右节点是从中间点(mid)+1到右端点的数组的中间节点;递归结束的标志是左指针大于右指针则返回null。算法的时间复杂度为O(n),空间复杂度为O

2020-10-31 21:50:22 202

原创 【每日一题】路径总和的变体

题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例返回 3。和等于 8 的路径有:5 -> 35 -> 2 -> 1-3 -> 11思路1强遍历,对所有节点,以该节点为起点,遍历其所有子节点,求路径和等于sum的个数,时间

2020-10-30 22:02:48 139

原创 【每日一题】调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。思路双指针法,用一个指针 left 指向数组第一个元素,用另一个指针 right 指向数组最后一个元素,然后判断:如果 left 所指元素为奇数,则left向后移一格,如果right所指元素为偶数,则right向前移一格,两个指针移动好后,交换这两个指针的元素

2020-10-29 21:48:29 136

原创 【每日一题】环形链表入环节点

题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。示例1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1], pos

2020-10-28 18:39:31 251

原创 【每日一题】字符串解码

题目描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例1输入:s = “3[a]2[bc]”输出:“aaabcbc”示例2输入:s

2020-10-27 21:40:34 582

原创 【每日一题】寻找峰值

题目描述峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。思路1:迭代二分查找通过二分查找来减小搜索空间,用

2020-10-26 20:56:00 204

原创 【每日一题】平衡二叉树

题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例1输入:root = [3,9,20,null,null,15,7]输出:true示例2输入:root = [1,2,2,3,3,null,null,4,4]输出:false思路由平衡二叉树的定义(一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树),因此可以采用递归的方法进行判断。采用自顶向下的递归方法,先判

2020-10-25 20:44:37 519

原创 【每日一题】相交链表

1024节日快乐呀!题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链

2020-10-24 22:46:52 119

原创 【每日一题】只出现一次的数字

题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例1输入: [2,2,1]输出: 1示例2输入: [4,1,2,1,2]输出: 4方法1:暴力法class Solution { public int singleNumber(int[] nums) { Map<Integer, Integer> map = n

2020-10-23 22:03:35 129

原创 【每日一题】最长上升子序列

题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路动态规划+二分查找 实现O(nlogn)的时间复杂度代码class Solution { public int lengthOfLIS(int[] nums) { int n = nums.length; int[] dp = new int[n];

2020-10-20 21:43:25 125

原创 【每日一题】反转链表递归法和迭代法

题目描述反转一个单链表示例:输入1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路(1)迭代法:用一个节点next指向当前节点的下一个节点,用pre指向前一个节点,在反转的时候要保留下一个节点的值,以便取到下一个几点,然后将当前节点的下一个节点指向pre,指完后将pre指向当前节点,然后当前节点指向next,继续进行遍历。因为要遍历所有的节点,因此时间复杂度为O(n),空间复杂度为O(1)。代码–迭

2020-10-19 21:32:54 135

原创 【每日一题】二叉树的最近公共祖先

题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5

2020-10-18 19:50:27 175

原创 【每日一题】颠倒二进制位

题目描述颠倒给定的 32 位无符号整数的二进制位。示例输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。思路用 n&1 取当前n的最后一位,从31开始

2020-10-17 20:42:05 336 1

原创 【每日一题】最长回文子串

题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。思路动态规划,遍历一遍字符串,用二维的boolean类型的数组来存放变量,时间复杂度为O(n)。代码class Solution { public static String longestPalindrome(String s) { int sLen = s.length()

2020-10-16 21:55:23 232 1

原创 【每日一题】最大子序和

题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路这道题可以用动态规划的思路来解决,用两个变量max和pre分别记录最大值和之前和,若之前和大于0,则说明之前和对结果有增益,记录之前和加上当前值作为新的之前和;否则,若之前和小于0,则当前的值就是之前和,最后比较之前和是否大于最大值,若比最大值大,则更

2020-10-15 21:04:11 131

原创 【每日一题】翻转二叉树

【题目描述】翻转一颗二叉树,依次翻转二叉树的左右孩子。示例输入:输出:思路提供两种方法:1.自顶向下;2.自底向上。自顶向下的方法,就是依次交换左右孩子节点,若左右孩子节点不为空,则继续交换其孩子节点,直到遍历到的节点为空;自底向上的方法,递归地对树进行遍历,并从叶子节点开始翻转。自顶向下/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNo

2020-10-14 20:38:06 264

原创 【每日一题】分隔链表

题目描述给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路因为要记录每个节点的相对位置,为小于目标值的放在一边,大于目标值的放在另一边,因此我们可以分别用两个节点分别指向小于目标值的一部分和大于目标值的一部分,然后遍历结束

2020-10-13 22:04:10 142

原创 【每日一题】无重复子串的最长连续子串及改版

题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。示例:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路这是原题,思路是滑动窗口解法。用map(Map<Character, Integer>)存放字符以及该字符的下标,用一个变量left记录左边界,ret记录最长子串的长度。遍历字符串,遍历的时候判断字符有没有在map中出现过,若没有,则放入该字符并更新最长子串长度;若发现在map中已经存在该字符,

2020-10-12 22:12:59 615

原创 【每日一题】递增序列中绝对值最小的数

题目描述给定一个递增数组,求其中绝对值最小的那个数。如给定数组为:-8, -5, -2, 3, 5, 7,则返回-2思路因为数组是递增序列,所以求绝对值最小的数只可能是位于正负边界的两个数之一,因此对于数组中同时存在正数和负数的情况,可以采用类似二分查找的方法,如果low和mid同号,那么那个绝对值最小的数一定在右侧,将low的值改为mid;如果low和high同号,那么绝对值最小的数一定在左侧,将high改为mid,也就是说,对于数组中有正有负的,一定是往趋向于零的方向找,最后low和high连续

2020-10-11 20:07:12 328

原创 【每日一题】对称二叉树

题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:思路:可以用递归和迭代方法进行求解。递归法镜像对称的条件是该节点的左节点和右节点的值相等,并且它的孩子节点也满足对称的规律,因此可以用递归来做;递归结束的标志为左右孩子都为空,则返回true,否则若只有一个为空,肯定是非对称的。class Solution { //镜像对称的条件是该节点的左节点和右节点的

2020-10-10 22:38:13 161

原创 【每日一题】搜索二维矩阵II

本题为力扣240题,属于中等难度题目,考察点为矩阵搜索以及规律优化。题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5

2020-10-09 22:58:28 200

原创 【每日一题】搜索旋转排序数组

本题为力扣33题,为中等难度题目,重点考察二分搜索的应用。题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例1输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2输入

2020-10-08 21:43:53 103

原创 【每日一题】二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要

2020-10-03 22:56:26 81

原创 【每日一题】Top k 问题

十一,先祝祖国母亲繁荣昌盛!题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例一:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例二:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4这虽然是一道力扣中等题,但在面试中却经常被考到,考点为快速排序。若直接采用快排,则会发现超时,代码如下:class Solution { public int fin

2020-10-01 22:22:22 106

三套鼠标指针方案(Oxy-Neon等).zip

用于更换windows的鼠标指针,给自己的电脑鼠标图标进行个性化升级。具体更换方法很简单,可以查看本人博客:https://blog.csdn.net/shao_yc/article/details/105593266

2020-04-18

空空如也

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

TA关注的人

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