自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (4)
  • 收藏
  • 关注

原创 JAVA设计模式总结之23种设计模式

一、设计模式概述(1)什么是设计模式设计模式(Design pattern) 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。(2)设计模式的三个分类创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把类或对象结合在一起形成一个更大的结构。行为型模式:类和对象如何交互,及划分责任和算法。(3)各分类中模式的关键点单例模式:某个类只能有一个实例,提供一个全局的访问点。简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。工厂方法:

2020-11-23 22:50:58 264

原创 LeetCode - 按标签分类刷题(双指针题解)

3. 无重复字符的最长子串 public int lengthOfLongestSubstring(String s) { int left = 0, right = 0, max = 0; Set<Character> set = new HashSet<>(); while (right < s.length()) { if (set.contains(s.charAt(right))) {

2020-11-30 11:38:12 401

原创 2020年全国高校计算机能力挑战赛初赛java语言解答

题目1统计从1到N的整数中,所有立方值的平方根为整数的数的格式输入说明:整数N(N<10000)输出说明:符合条件的数的个数,如4^3= 64 = 8^2输入样例:10输出样例:3(说明:样例中符合条件的3个数是1、4、9)public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int cou

2020-11-29 16:36:11 1818 7

原创 【极客大学-算法训练营】高级搜索:剪枝、双向BFS、启发式搜索(A*)

剪枝主要用在搜索中的一个策略。以下是两种搜索方法:广度搜索 和 深度搜索DFS模板: public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> allResults = new ArrayList<>(); if(root==null){ return allResults;

2020-11-26 21:49:21 494

原创 LeetCode - 51. N 皇后(回溯法)

N 皇后回溯法模板:void backtracking(参数){ if(终止条件){ 收集结果; return; } for(选择:本层集合中的元素(树中节点孩子的数量就是集合大小)){ 处理节点; backtracking(路径,选择列表); 回溯,撤销处理结果; }}题解: public List<List<String>> solveNQ.

2020-11-23 22:25:13 151

原创 LeetCode - 1207. 独一无二的出现次数(哈希表)

独一无二的出现次数三种解决方法:1,先计算每个数出现的次数,再存放到集合set中,判断长度第一步都是要先计算每个数出现的次数。后面的只需要判断这个出现次数的数组中元素是否有重复的即可。我们知道集合set是不能有重复元素的,如果有就会替换掉,我们可以把出现次数的数组放到集合set中,如果有重复的就会被替换掉,那么set的大小肯定和出现次数的数组长度不一样。否则如果没有重复的,他们的长度肯定是一样的 public boolean uniqueOccurrences(int[] arr) {.

2020-11-23 22:20:37 136

原创 【Java中遍历Map对象的4种方法】

【Java中遍历Map对象的4种方法】1、通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时。2、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值。3、如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。4、通过Map.entrySet使用iterator遍历ke

2020-11-23 21:47:31 276 1

原创 LeetCode - 37. 解数独(回溯法)

37. 解数独和八皇后问题类似,横向、纵向、斜角问题判断方法一:(回溯法)class Solution { public void solveSudoku(char[][] board) { if (board == null || board.length == 0) return; solve(board); } private boolean solve(char[][] board) { fo

2020-11-22 22:48:29 218

原创 LeetCode - 36. 有效的数独(哈希表)

有效的数独输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."],[".",“9”,“8”,".",".",".",".",“6”,"."],[“8”,".",".",".",“6”,".",".",".",“3”],[“4”,".",".",“8”,".",“3”,".",".",“1”],[“7”,".",".",".",“2”,".",".",".",“6”],[".",“.

2020-11-22 17:51:31 173

原创 LeetCode -844. 比较含退格的字符串(栈、双指针)

比较含退格的字符串方法一(栈):如果它是退格符,那么我们将栈顶弹出;如果它是普通字符,那么我们将其压入栈中。class Solution { public boolean backspaceCompare(String S, String T) { return build(S).equals(build(T)); } private String build(String str) { StringBuffer sb = new .

2020-11-20 22:46:08 249

原创 剑指 Offer 59 - I. 滑动窗口的最大值(双端队列)

剑指 Offer 59 - I. 滑动窗口的最大值239 题:滑动窗口法leetcode. [239]滑动窗口最大值(B-F(暴力实现),PQ(优先队列),Deque(双端队列),DP(动态规划))方法一:暴力法class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int n = nums.length; if (n * k == 0) return new int[0];

2020-11-20 22:40:50 199

原创 面试题 01.05. 一次编辑(动态规划)

面试题 01.05. 一次编辑字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入: first = "pale"second = "ple"输出: True示例 2:输入: first = "pales"second = "pal"输出: False方法一:主要思路:只有一个地方需要修改,那么不妨定位到不同字符处。有以下两种情况(1)长度相同:leetcode 与 leetk

2020-11-19 22:28:19 336

原创 LeetCode - 236. 二叉树的最近公共祖先(树的遍历)

二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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解.

2020-11-18 22:28:02 265

原创 LeetCode - 235. 二叉搜索树的最近公共祖先(一次遍历、两次遍历)

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

2020-11-18 22:07:00 127

原创 LeetCode - 547. 朋友圈(并查集)

朋友圈题目:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 1:输入:[[1,1,0], [1,1,0], [0,0,1]]输出:2 解释:.

2020-11-18 21:50:03 194

原创 内卷到底是什么意思?

万物皆可卷,一夜之间,“内卷”这个词遍地开花。一、内卷到底是什么意思?由青塔发的微信推文,清北硕博生,也难逃「内卷」,这一文让我意思到最近听到的很多遍的“内卷”,思考“内卷”到底是什么意思?我觉得知乎上说的很好,内卷。通俗易懂的解释内卷,并列举一些例子:看电影,为了获得更好的视野,一个人先站起来看了,被他挡住的人不得不也站起来,最后大家都不得不站起来看电影,只有第一排的人坐着。玩游戏,为了更好地娱乐,一个人先充钱吊打别人去了,被他虐的人不得不也充钱,最后所有的人要么使劲充钱要么被吊.

2020-11-18 14:09:25 25971 2

原创 LeetCode - 208. 实现 Trie (前缀树)(字典树)

208. 实现 Trie (前缀树)题目:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"); // 返回 truetrie.insert("app");

2020-11-17 22:26:22 260

原创 LeetCode - 198. 打家劫舍(动态规划)(程序员面试金典 - 面试题 17.16. 按摩师)

打家劫舍类似题目:(几乎一样)面试题 17.16. 按摩师题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃.

2020-11-17 16:46:00 252

原创 Spring 概念和耦合解耦、IOC、依赖注入

主要内容:spring框架的概述以及spring中基于XML的IOC配置要明白的知识:spring的IoC能解决什么问题如果搭建spring中基于XML的IOC配置如何使用spring的注入实现类之间的依赖关系1、Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架a. 以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核b. 提供了展现层 Spring

2020-11-17 11:22:34 257

原创 eclipse安装spring提示插件

2020-11-17 10:56:48 128

原创 IDEA的使用(快捷键、导包,maven配置、快捷日志)

一 、常用快捷键1 反撤销 crtl+shift+z2 复制多行 ctrl+D3 删除多行 ctrl+Y4 导包+自动修复 art+enter5 类的一些属性构造 art+insert或者右键generate6 生成新变量 new Person().var7 重命名shitf+F68 查看代码布局(outline)art+79 查看project :art+110 crtl+shift+↑↓ 上下移动代码块11 iter 回车,是增强for itar12 crtl+shitf+

2020-11-17 10:55:15 2128

原创 LeetCode - 322. 零钱兑换(递归、记忆化搜索、动态规划、广度优先)

零钱兑换题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amount = 0输出:0.

2020-11-15 15:48:54 630

原创 LeetCode - 152. 乘积最大子数组(动态规划)

乘积最大子数组题目:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解题思路标签:动态规划遍历数组时计算当前最大值,不断更新令imax为当前最大值,则当前最大值为 imax = max(imax * .

2020-11-14 22:22:40 120

原创 LeetCode - 120. 三角形最小路径和(动态规划、递归、记忆搜索)

三角形最小路径和题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。思路:暴力法,递归,n层,left or right:2^nDPa.重复性(分治) problem(i,.

2020-11-14 22:16:30 279

原创 LeetCode - 53. 最大子序和(分治、动态规划)

最大子序和题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。方法一:(动态规划)public int maxSubArray(int[] nums) { int ans = nums[0];//初始值设为.

2020-11-14 11:05:16 184

原创 LeetCode - 1143. 最长公共子序列(动态规划)

最长公共子序列推荐MIT动态规划课程:MIT 动态规划动态规划思路:第一步,一定要明确 dp 数组的含义。对于两个字符串的动态规划问题,套路是通用的。比如说对于字符串 s1 和 s2,它们的长度分别是 m、n,一般来说都要构造一个这样的 DP table:int[][] dp = new int[m+1][n+1]。这里为什么要加1,原因是你可以不加1,但是不加1你就会用其它限制条件来确保这个index是有效的,而当你加1之后你就不需要去判断只是让索引为0的行和列表示空串。第二步.

2020-11-12 19:56:35 155

原创 LeetCode - 63. 不同路径II(动态规划、递归)

不同路径II这个是对上一个进行了障碍物的判断,增加了中间动态规划的判断条件,实质上是不变的题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输.

2020-11-11 23:21:24 262

原创 LeetCode - 62. 不同路径 (动态规划、递归、自底向上)

不同路径题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3.

2020-11-11 23:12:19 199

原创 LeetCode - 74. 搜索二维矩阵(二分法)

搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 13输出:false示例.

2020-11-10 22:23:06 266

原创 LeetCode - 33. 搜索旋转排序数组(暴力、二分)

搜索旋转排序数组题目:给你一个升序排列的整数数组 nums ,和一个整数 target 。假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4示例 2:输入:nums = [4,5,6,7,0,1,2], t.

2020-11-10 21:51:36 179

原创 LeetCode - 367. 有效的完全平方数(二分查找、牛顿法)

有效的完全平方数题目:给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16 输出:True示例 2:输入:14输出:False方法一:二分查找class Solution { public boolean isPerfectSquare(int num) { if (num < 2) { return true; .

2020-11-09 20:16:22 167

原创 LeetCode - 69. x 的平方根(二分查找、牛顿法)

x的平方根题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。方法一:二分查找class Solution { public int mySqrt(int x) { if(x == 0 || x =.

2020-11-08 13:56:35 146 1

原创 LeetCode - 55. 跳跃游戏(贪心)

跳跃游戏题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。.

2020-11-06 19:56:20 201

原创 LeetCode - 121. 买卖股票的最佳时机(动态规划、数组)

题目汇总股票系列一共 6 道题:题号题解分析难度等级121. 买卖股票的最佳时机暴力解法、动态规划(Java)最多进行 1 笔交易(k=1)【贪心】简单122. 买卖股票的最佳时机 II暴力搜索、贪心算法、动态规划(Java)不限交易次数(k=+inf)【二维 DP】简单123. 买卖股票的最佳时机 III动态规划(Java)最多进行 2 笔交易(k=2)【三维 DP】困难188. 买卖股票的最佳时机 IV动态规划最多进行 k 次交易困难

2020-11-06 17:03:12 147

原创 LeetCode - 122. 买卖股票的最佳时机II(贪心算法、数组、动态规划)

题目汇总股票系列一共 6 道题:题号题解分析难度等级121. 买卖股票的最佳时机暴力解法、动态规划(Java)最多进行 1 笔交易(k=1)【贪心】简单122. 买卖股票的最佳时机 II暴力搜索、贪心算法、动态规划(Java)不限交易次数(k=+inf)【二维 DP】简单123. 买卖股票的最佳时机 III动态规划(Java)最多进行 2 笔交易(k=2)【三维 DP】困难188. 买卖股票的最佳时机 IV动态规划最多进行 k 次交易困难

2020-11-06 17:02:52 181

原创 LeetCode - 455. 分发饼干(贪心 + 双指针)

分发饼干题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩.

2020-11-06 10:41:29 207

原创 LeetCode - 66. 加一(数学、数组)

加一题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。代码:class Solution { public int[] plusOne(int[] d.

2020-11-05 21:48:14 206

原创 Leetcode - 515. 在每个树行中找最大值 (BFS、DFS)

在每个树行中找最大值您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]题目分析:实际上就是层序遍历,再输出每层的最大值方法一:BFS(按照层序遍历的思想,进行广度优先遍历) public List<Integer> largestValues(TreeNode root) { //LinkedList实现队列 .

2020-11-05 21:04:31 283

原创 LeetCode - 169.多数元素(哈希表、分治)【map的4种遍历方式】

多数元素题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2方法一: 哈希表class Solution { public int majorityElement(int[] nums) { Map<Integer,Integer> .

2020-11-03 22:54:54 280

原创 LeetCode 102. 二叉树的层序遍历(广度优先遍历BFS)

二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3/ \9 20 / \ 15 7返回其层次遍历结果: [ [3], [9,20], [15,7] ]方法一:广度优先遍历class Solution { public List<List<Integer>> levelOrder(Tree.

2020-11-02 22:49:59 296

Java源码分析:集合-容器.pdf

Java源码分析:集合-容器.pdf

2021-04-02

maven_02_parent.zip

maven工程拆分与聚合的思想 ,把web工程修改成maven拆分与聚合的形式的具体步骤 1. maven工程拆分与聚合的思想 2. 把第二阶段做好的web工程修改成maven拆分与聚合的形式

2020-12-16

ssm_test.zip

SSM框架——详细搭建整合环境SSM框架(Spring+SpringMVC+MyBatis) 服务器开发,分三层 Spring去整合另外两个框架 spring ——> mybatis spring ——> spring mvc 表现层:Spring MVC框架 业务层:Spring框架 持久层:MyBatis框架 选择:配置文件 + 注解的方式

2020-12-16

Linux&Nginx

Linux的安装步骤和资源安装包,linux目录结构介绍,linux常用命令,linux权限命令讲解,vi&vim编辑器,linux常用的网络操作;Nginx的安装和启动,nignx静态网站部署步骤手册,Nginx反向代理与负载均衡

2020-10-23

空空如也

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

TA关注的人

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