自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (5)
  • 收藏
  • 关注

原创 416. 分割等和子集

416. 分割等和子集难度中等537收藏分享切换为英文接收动态反馈给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.思路:我们可以巧妙的将问

2020-10-11 23:11:27 125

原创 剑指 Offer 38. 字符串的排列

剑指 Offer 38. 字符串的排列难度中等109收藏分享切换为英文接收动态反馈输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8深度优先搜索,可以在每一位上维护一个set集合防止该位出现相同的字符导致重复,达到剪枝的目的。package LeetCode;impor

2020-09-30 23:25:33 138

原创 剑指 Offer 45. 把数组排成最小的数

剑指 Offer 45. 把数组排成最小的数难度中等101收藏分享切换为英文关注反馈输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

2020-09-28 20:03:47 137

原创 583,Offer12, Offer26

#583,Offer12, Offer26538. 把二叉搜索树转换为累加树难度简单378收藏分享切换为英文关注反馈给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18

2020-09-21 20:20:54 95

原创 [LCP 23. 魔术排列]

[LCP 23. 魔术排列]秋日市集上,魔术师邀请小扣与他互动。魔术师的道具为分别写有数字 1~N 的 N 张卡牌,然后请小扣思考一个 N 张卡牌的排列 target。魔术师的目标是找到一个数字 k(k >= 1),使得初始排列顺序为 1~N 的卡牌经过特殊的洗牌方式最终变成小扣所想的排列 target,特殊的洗牌方式为:第一步,魔术师将当前位于 偶数位置 的卡牌(下标自 1 开始),保持 当前排列顺序 放在位于 奇数位置 的卡牌之前。例如:将当前排列 [1,2,3,4,5] 位于偶数位置的

2020-09-20 15:32:00 312

原创 自定义容器排序规则

自定义容器排序规则继承并重写Comparable<?>接口向排序函数中传入比较器package LeetCode;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * @ClassName TestComperator * @Description 自定义排序规则 * 1.继承并重写Compar

2020-09-15 21:42:22 139

原创 [133. 克隆图]

[133. 克隆图]给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。

2020-08-12 13:17:54 83

原创 [329. 矩阵中的最长递增路径]

[329. 矩阵中的最长递增路径]给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最长递增路

2020-07-26 22:29:47 88

原创 [410. 分割数组的最大值]

[410. 分割数组的最大值]给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为1

2020-07-25 16:33:33 90

原创 [312. 戳气球]

[312. 戳气球]有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] = 1,但

2020-07-20 00:26:22 91

原创 BOI,NIO和IO多路复用器

BOI,NIO和IO多路复用器BIO即阻塞IO特点:每线程,每链接当有新的连接建立时,BIO会抛出一个线程去监听这个连接从学校到学生家,我们看作线程从用户态到内核态BIO对于每一个连接都会抛出一个线程去监听连接,并且每个线程调用eccept(), recv()都会陷入内核态导致资源浪费,效率低下NIONIO在BIO的基础上对每一次eccept,recv()进行改进,如果有则返回信息,没有则返回-1或null,之后每隔一段时间(sleep())进行一次轮询(一般先调用eccept(),在调用

2020-07-18 18:55:09 406

原创 [97. 交错字符串]

[97. 交错字符串]给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false思路:经典的动态规划问题令 dp[i][j] 为 s1的前i个字符和s2的前j个字符是否符合, dp[0][0] == true

2020-07-18 12:50:32 245

原创 数的三种遍历方式(迭代法)

数的三种遍历方式(迭代法)思路:使用栈帮助存储树节点先序遍历public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); Stack<TreeNode> s = new Stack<>(); //防止输入为空 if(root != null) {

2020-07-18 11:16:07 715

原创 线程安全的容器

线程安全的容器List ,SetSynchronizedList, SynchronizedSet和名字一样为了保证线程安全,在List 和 Set的所有方法上加上了Synchronized关键字保证线程安全优点:无论读取还是更新都保证时最新的数据缺点:对于高并发读的业务性能不高CopyOnWrite集合类java.util.concurrent.CopyOnWriteArrayListjava.util.concurrent.CopyOnWriteArraySetpublic boo

2020-07-16 17:14:45 245

原创 [96. 不同的二叉搜索树]

[96. 不同的二叉搜索树]给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1

2020-07-15 11:25:35 70

原创 [5211. 概率最大的路径]

[5211. 概率最大的路径]给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] = [a, b] 表示连接节点 a 和 b 的一条无向边,且该边遍历成功的概率为 succProb[i] 。指定两个节点分别作为起点 start 和终点 end ,请你找出从起点到终点成功概率最大的路径,并返回其成功概率。如果不存在从 start 到 end 的路径,请 返回 0 。只要答案与标准答案的误差不超过 1e-5 ,就会被视作正确答案。示例 1:

2020-07-12 14:55:00 227

原创 [面试题 17.13. 恢复空格]

[面试题 17.13. 恢复空格]哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。

2020-07-09 14:26:23 79

原创 [5455. 最多 K 次交换相邻数位后得到的最小整数]

[5455. 最多 K 次交换相邻数位后得到的最小整数]给你一个字符串 num 和一个整数 k 。其中,num 表示一个很大的整数,字符串中的每个字符依次对应整数上的各个 数位 。你可以交换这个整数相邻数位的数字 最多 k 次。请你返回你能得到的最小整数,并以字符串形式返回。示例 1:输入:num = "4321", k = 4输出:"1342"解释:4321 通过 4 次交换相邻数位得到最小整数的步骤如上图所示。示例 2:输入:num = "100", k = 1输出:"010"

2020-07-05 15:53:55 466

原创 [32. 最长有效括号]

[32. 最长有效括号]给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"思路:看到括号匹配第一想法就是栈模拟,但是他求的是连续的子串,很容易就想到动态规划,思路见注释public int longestValidParentheses(String s) { int res =

2020-07-04 13:06:38 74

原创 [378. 有序矩阵中第K小的元素]

[378. 有序矩阵中第K小的元素]给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。思路 : 在Matrix[0][0]~Matrix[length-1][length-1]之间二分查找一个数n, 遍历数组如果小于等于n的个数大于K

2020-07-02 12:07:01 90

原创 [718. 最长重复子数组]

[718. 最长重复子数组]给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释: 长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100思路:动态规划​ dp[i] [j] 表示以i, j 为结尾的连续公共子数组那么:​ dp[i][j] = A[

2020-07-01 11:22:30 110

原创 排序算法--归并,堆,快速排序

排序算法–归并,堆,快速排序归并排序思路:分治public class MergeSort { public static void main(String[] args) { int[] arr = {8,4,7,5,6,3,1,2}; print(arr); sort(arr); } static void sort(int[] a){ int mid = a.length/2; a =

2020-06-25 23:24:41 99

原创 改进的插排--希尔排序

改进的插排–希尔排序希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminshing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。间隔大的时候,要交换的数量少间隔小的时候,要交换的距离短思路:给定一

2020-06-25 23:24:02 114

原创 排序算法--选泡插

·排序算法–选泡插常见排序:选择,冒泡,希尔,插入,堆,归并,快速,桶,计数,基数排序打油诗–对应平均复杂度和稳定性选泡插,快归堆希桶计基,恩方恩老恩一三,对恩加K恩乘K,不稳稳稳不稳稳,不稳不稳稳稳稳。选择排序算法思想:多次遍历数组,每次都找到最小的数放到最前面。public static void main(String[] args) { int[] arr = {8,7,6,5,4,3,2,1}; for (int i : arr) {

2020-06-25 23:23:30 592 1

原创 对封装继承多态的理解

对封装继承多态的理解封装即把对象的属性和方法包裹起来, 只能通过约定好的接口实现访问封装是一种信息隐藏技术,在java中通过关键字private实现封装。封装的作用:① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。继承继承是面向对象的最显著的一个特征。继

2020-06-23 19:06:06 777 1

原创 SSM入门

SSM入门pom.xml<!--依赖 :junit , 数据库驱动, 连接池, servlet, jsp, mybatis, mybatis-spring, spring, 日志管理--> <dependencies> <!--日志管理--> <dependency> <groupId>log4j</groupId> <artifactId

2020-06-22 20:35:12 136

原创 Servlet[springmvc]的Servlet.init()引发异常

Servlet[springmvc]的Servlet.init()引发异常分析:Maven项目,application-context.xml、db.properties文件均放置在src/main/resources目录下,Tomcat部署项目,src/main/resources目录下的配置文件默认位置为:{项目名}/WEB-INF/classes,而Spring却在项目根目录下寻找,肯定找不到,因此,配置时指定classpath目录下寻找即可。解决方案如下:<context:proper

2020-06-22 18:32:18 35402 5

原创 [面试题 16.18. 模式匹配]

[面试题 16.18. 模式匹配]你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a","go"是"b"),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:输入: pattern = "abba", value = "dogca

2020-06-22 12:19:43 132

原创 [124. 二叉树中的最大路径和](

[124. 二叉树中的最大路径和](给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7输出: 42思路:分治+递归二叉树的最大值等于

2020-06-21 22:03:26 103

原创 [1014. 最佳观光组合]

[1014. 最佳观光组合]给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.l

2020-06-17 13:51:53 71

原创 Mapped Statements collection already contains value for...问题解决

Mapped Statements collection already contains value for…问题解决情况1: 就是方法id重复了,但不一定是xxx重复,而有可能是yyy。所以最好是把新旧代码做个diff,看看都加了哪些方法,逐个去排查;情况2:方法参数写错了或者没写。比如resultType="UserVO"写成了resultType=“User”。这种情况一般是最近删除了什么bean或者重命名了什么bean而xml对应的参数类型没有修改而导致的。同样的,mybatis并不一定能准确

2020-06-14 17:44:18 333

原创 [1300. 转变数组后最接近目标值的数组和]

[1300. 转变数组后最接近目标值的数组和]给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成

2020-06-14 15:46:50 70

原创 [多数之和]

[15. 三数之和]给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。**注意:**答案中不可以包含重复的三元组。基本都是暴力+剪枝优化示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]public List<List<Integer>>

2020-06-12 12:50:02 116

原创 MyBaits

MyBaits1.简介1.1 什么是MybaitsMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架。持久层: 可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏,在断电或者其他情况下,重新开启系统仍然可以读取到这些数据。优点: 可以使用巨大的磁盘空间存储相当量的数据,并且很廉价缺点:慢(相对于内存而言)1.2

2020-06-11 12:14:59 210

原创 Q739.每日温度

Q739.每日温度根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。思路一:单调栈(正向遍历)publi

2020-06-11 12:14:16 89

原创 面试题46. 把数字翻译成字符串

面试题46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”提示:0 <= num < 231思路:动态规划pub

2020-06-09 14:04:43 65

原创 [990. 等式方程的可满足性]--并查集

[990. 等式方程的可满足性]–并查集给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无

2020-06-08 13:08:27 77

原创 [128. 最长连续序列]

[128. 最长连续序列]给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:hash表+枚举,我们先用hash Set存储每一个数,再遍历每一个数i为起始位置时,查找是否存在i+1,i+2,。。。来找到最大长度,但并不需要枚举每一个i,对于一个i如果存在 i-1,则没有必要枚举它,应为无论如何,它一定包含在 i-1为起始

2020-06-06 13:05:02 66

原创 javaweb实现简单登陆功能

javaweb实现登陆用户登陆首页<%-- Created by IntelliJ IDEA. User: Administrator Date: 2020/6/4 Time: 19:05 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><

2020-06-04 20:57:32 909

原创 项目部署到Tomcat后出现无法连接数据库问题

项目部署到Tomcat后出现无法连接数据库问题报错信息:无法找到数据库驱动类原因:由于我的驱动是maven导入的,项目部署到Tomcat后网页的请求走的是Tomcat的依赖包,无法再Tomcat依赖中找到数据库连接的依赖解决:将maven仓库中下载的数据库驱动拷贝到Tomcat文件夹下的lib目录...

2020-06-04 20:33:39 4670

2017《复变函数与积分变换》复习资料.doc

该文档为本人学校的复变函数期末复习资源,1个积分也不多

2020-03-19

操作系统课程设计+实验报告.rar

自己做的操作系统概论课程设计,对死锁避免中的银行家算法作进一步理解。 1. 完成了操作系统的模拟  2. 加深理解死锁的概念。    3. 加深理解安全序列和安全状态的概念。   4. 通过编写和调试一个系统动态分配资源的简单模拟程序, 观察死锁 产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。

2020-01-01

商品信息管理系统.rar

自己做的数据库系统概论课程设计,主要实现了商城商品的信息管理,员工管理,供应商管理,商品出库入库管理,登陆权限限制。

2020-01-01

Cshape.rar

C#的程序实验,一共10个程序,运行环境VS2019,包括从第五章到第九章的习题,在平时开发过程中,数组是我们使用频率最高的类型之一,在使用定长列表时,数组可以说是最佳方案,这也是我们最熟悉的数据结构之一。 在C#中使用数组,可以获取在内存上连续的相同类型的一组变量,在连续访问时可以满足CPU访问寄存器的时间局部性和空间局部性

2020-01-01

博弈算法详解大萨达撒多大

从基础到进阶 取石子问题 有N堆石子,其中第i堆有Pi颗石子,每次从某一堆里选出若干石子去掉(但不能不去石子),两人轮流取石,谁不能继续取谁就输了。 什么情况下先手必胜,什么情况下后手必胜?

2018-10-28

空空如也

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

TA关注的人

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