自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dfs常规设计思路:LeetCode:#1575.统计所有可行路径

设计dfs算法有三个思路:1. 设计好递归函数的【入参】和【出参】2. 设计好递归函数的出口(Base Case)3. 编写【最小单元】处理逻辑通常Base Case是三部曲中最难的。以一道题为例:Question:给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出发城市、目的地城市和你初始拥有的汽油总量每一步中,如果你在城市 i ,你可以选择任意一个城市 j ,满足 j !.

2021-12-13 11:00:21 226

原创 动态规划相关问题

1. 我们是如何确定本题可以使用动态规划来解决的?通常我们要从有无后效性进行入手分析。如果对于某个状态,我们可以只关注状态的值,而不需要关注状态是如何转移过来的话,那么这就是一个无后效性的问题,可以考虑使用DP解决。后效性分析:某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的影响。如果之前的决策对未来的决策进行了一定的限制,也就是之前影响了未来,那么这就叫有后效性。2. 我们是如何确定本题的状态定义的?DP的状态定义很大程度是靠经验去猜的。虽然大多数情况都是猜

2021-11-30 21:59:52 225

原创 动态规划专栏:Leetcode:#62 不同路径

Question:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?Resolution:dp路径问题二元数组f[i][j]记录到达(i,j)存在的路径数定义状态方程:1. 当只能通过右移到达(i,j),f[i][j]=f[i-1][j]2. 当只能通过下移到达(i,j),f[i][j]=f[i][j-

2021-11-29 21:55:54 133

原创 贪心算法专栏:Leetcode#502 IPO

Question:假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i] 。最初,你的资本为 w 。当你完成一个项目时,你将获得纯利润,且利润将被添加到你

2021-11-29 15:24:47 278

原创 贪心算法专栏:Leetcode#397 整数替换

Question:给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。 如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?Resolution:1. 记忆化map集合+深度优先搜索:public class IntegerReplacement { Map<Long, Integer> map = new HashMap<>(); publi...

2021-11-24 11:03:00 244

原创 贪心算法专栏:Leetcode:#11盛最多水的容器

Question:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。Resolution:先用两个指针 i 和 j 指向左右边界,然后考虑指针应该怎么移动。由于构成矩形的面积,取决于 i 和 j 之间的距离(记为 w) 和 i 和 j 下标对应的高度的最小值(记...

2021-11-21 18:24:18 187

原创 【SpringBoot】视图解析及地址路由相关总结

Springboot官方推荐的Themeleaf提供自动渲染模板页功能:public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html";}

2021-11-05 11:26:15 490

原创 双指针/二分法【有效三角形的个数】一题双解

Question:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。本题实质是找到符合条件的【三元组值】。【二分法】我们在枚举前对数组进行升序排序,通过从前向后枚举最小值下标i和较小值下标j,可以在求解最大值下标m的时候固定前两个解,固定两个值的情况下我们只需要在第三个值的选取上做文章即可。不难发现,根据式子nums[i] + nums[j] > nums[m],我们只需要找到符合该式子的m的最大下标k,从j+1到k均为符合条件的解。问题聚焦到如.

2021-10-20 16:07:17 135

原创 Dichotomy专栏:Leetcode:#33 搜索旋转排序数组

Question:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为[4,5,6,7,0,1,2] 。给你 旋转后 .

2021-10-06 10:12:19 74

原创 SlideWindow专栏:Leetcode#1838 最高频元素的频数

Question:元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。Example:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。Res

2021-10-04 16:31:31 77

原创 SlideWindow专栏:leetcode#220 存在重复元素Ⅲ

Question:给你一个整数数组 nums 和两个整数k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。Example:输入:nums = [1,2,3,1], k = 3, t = 0输出:trueResolution:对于序列中的每个元素x,我们都一律只考虑元素x的左侧至多k个元素,而不考虑右侧..

2021-09-18 15:32:30 111

原创 SlideWindow专栏:leetcode#30 串联所有单词的子串(hard)

Question:给定一个字符串s和一些 长度相同 的单词words 。找出 s 中恰好可以由words 中所有单词串联形成的子串的起始位置。注意子串要与words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑words中单词串联的顺序。Example:输入:s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出的顺序...

2021-09-16 18:19:18 105

原创 力扣#3 无重复字符的最长字串(难度:中等)

今天开启一个新的专题:滑动窗口。跟随着宫水三叶 ’s exercise diary,已经走过了simulation,doublepointer两个专题,刷过了如下的题目:做个简单的总结八:模拟类题目只需要将题设给出的迭代规则转换为java代码,而doublepoiner相对较复杂,有前后快慢指针,有二分指针,根据题目做具体分析。今天来看一个滑动窗口的题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。我们遍历过程中用一个hashmap记录迭代过的字符,并记录下标...

2021-09-15 12:01:54 654

原创 力扣#424 替换后的最长重复字符(难度:中等)

题目:给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。注意:字符串长度 和 k 不会超过104。解题思路:本题利用双指针+滑动窗口的方法进行求解。初始窗口的宽度为1,我们不断的通过向当前窗口覆盖的子串后面追加一个字符看是否能满足我们的要求,那么如何判断该字符串是否满足我们的要求:如果当前字符串中的出现次数最多的字母个数+K大于串长度,那么这个串就是满足条件的;我们维护...

2021-08-26 16:35:58 110

原创 力扣#413 等差数列划分(难度:中等)

题目:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。解题思路:我们以

2021-08-25 15:49:57 147

原创 力扣#395 至少有K个重复字符的最长子串(难度:中等)

题目:给你一个字符串s和一个整数k,请你找出s中的最长子串,要求该子串中的每一字符出现次数都不少于k。返回这一子串的长度。解题思路:假设长度t的一段区间满足要求的话,t+1长度的区间是否满足条件是不确定的,取决于t+1个位置出现的字符是否在原有区间内:1. 如果新位置的字符在原有区间内,那必然还是满足出现次数大于K;2. 如果新位置的字符在原有区间没出现过,那新字符的出现次数只有一次,那必然不满足要求;因此我们无法使用二分法,相应的也无法直接使用【滑动窗口】+【双指...

2021-08-22 16:38:31 120

原创 力扣#16 最接近的三数之和(难度:中等)

题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。解题思路:本题使用排序+双指针的方法,对数组进行升序排序,用res记录当前最优解,遍历数组: 令前指针指向下一个元素,后指针...

2021-08-02 19:49:36 94

原创 力扣#11 称最多水的容器(难度:中等)

题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。解题思路:...

2021-07-31 21:13:33 74

原创 力扣#3 无重复字符的最长子串(难度:中等)

题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。解题思路:本题考查双指针+滑动窗口思想。每次用双指针和一个哈希map维护一个子串,哈希表中以(字符,出现下标)的格式记录字串信息,前指针记录子串的开始,后指针向后移动,当移动到一个map中存在的字符,滑动窗口向后移动,分为两个步骤:1. 首先确定前后指针的位置,由于后指针指向的字符与字串中某个字符重复,所以前指针为哈希表中记录的重复字符出现的下标的下一个位置,后指针向后移动一个,2. 更新哈希表和最长字串长度...

2021-07-30 16:42:13 105

原创 力扣#451 根据字符串出现频率排序(难度:中等)

题目:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。解题思路:本题是考查数据结构运用的模拟题。1. 先使用哈希表对词频进行统计;2. 遍历统计好词频的哈希表,将每个键值对对象以{字符,词频}的形式存储到大顶堆中。3. 从大顶堆中依次弹出,构造答案字符串。代码示例:

2021-07-29 21:23:44 126

原创 2021-07-29

信道参数包括哪些:传输速率,信噪比,信道增益,噪声功率。如何理解信道:频段是划分信道的,就是说不同频段的电磁波是不同穿道。一根光纤中也可以传输不同波长的波,由不同波长的光波划分不同信道。什么是信道增益:信道增益是指信道系数h,描述的是信道本身的衰减及衰落特性。香农公式:香农定理指出,如果信息源的信息速率R小于或者等于信道容量C,那么,在理论上存在一种方法可使信息源的输出能够以任意小的差错概率通过信道传输;如果R>C,则没有任何办法传递这样的信息,或者说传递这样的二进制信息的

2021-07-29 15:53:21 6810

原创 力扣#190 颠倒二进制位(难度:中等)

题目:颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。解题思路:java中整数在电脑中的存储机制:正数按其二进制存储,负数按其二..

2021-07-28 20:18:14 95

原创 博弈论综述

博弈:是指在一定的游戏规则约束下,基于直接相互作用的环境条件下,各参与人依托所掌握的信息,选择各自的策略(行动),以实现利益最大化的过程。博弈论:双方或者多方在竞争,合作,冲突等情况下,充分了解各方信息,并依此选择一种能为本方争取最大利益的最优决策的理论。重要性:经济史上普遍认为有三次伟大的革命:“边际分析革命”,“凯恩斯革命”,“博弈论革命”。可见其地位举足轻重。博弈论包含四大因素:1. 至少有两个参与者;2. 利益;3. 策略,在博弈中,决策主体根据获得的信息和自己的判断制定出行

2021-07-26 11:11:42 482

原创 力扣#65 有效数字(难度:困难)

题目:有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+' 或 '-') 下述格式之一: 至少一位数字,后面跟着一个点 '.' 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字 一个点 '.' ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分: (可...

2021-07-19 10:56:14 137

原创 力扣#59 螺旋矩阵Ⅱ(难度:中等)

题目:给你一个正整数n ,生成一个包含 1 到n *n所有元素,且元素按顺时针顺序螺旋排列的n x n 正方形矩阵 matrix 。示例:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]解题思路:矩阵的填充顺序为从左上到右上,从右上到右下,从右下到左下,从左下到左上,逐层向内缩减。我们应想办法使循环过程中遵循相同的边界条件,因此在每个方向的遍历填充过程中,遵循左闭右开的规则,右边界的元素交给下一个方向的遍历填充过程来完成,如下图所示:每种颜...

2021-07-17 11:11:09 117

原创 力扣#38 外观数列(难度:中等)

题目:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数...

2021-07-15 15:10:04 85

原创 力扣#31 下一个排列(难度:中等)

题目:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 :输入:[4,2,0,2,3,2,0]输出:[4,2,0,3,0,2,2]解题思路:找下一个排列更大的数,我们尽可能的将低位的数字变大,其实就是将k位到最低位的所有数作为候选,判断是否有更大的数可以填入k位中,换句话说,我们要找的第k位其实就是从低位到高位第一个下降

2021-07-15 11:29:20 73

原创 力扣#14 最长公共前缀(难度:简单)

题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。解题思路:1. 定义StringBuilder对象res用来存储最长公共前缀,设置初始值"";2. 字符串数组长度如果为1,则字节范围索引为0的字符串;3. 遍历strs字符串数组,定义一个整型变量j,记录遍历到第几个索引位置的字符。判断第一个字符串的长度是否大于j,如果大于则取出第一个字符串的j索引位置的字符记录为c,接着步骤4的遍历,否则结束遍历;4. 当把第一个字符串的j索引位置的字.

2021-07-13 10:28:56 70

原创 力扣#13 罗马数字转整数(难度:简单)

题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: ...

2021-07-12 09:21:36 84

原创 后端三大框架整合

从4月开始,到今天7.1日党的生日,历经三个月,在项目,学术之余断断续续的把Java后端三大框架Spring,SpirngMVC,Mybatis学习完成。在这里对三大框架的整合做一个总结。

2021-07-02 20:53:28 1691

原创 数据交换问题小结

最近学习SpringMVC框架,这个框架在与前端进行数据交换的过程中与asp.net有些不同。由于之前的项目我一直从事前端开发工作,只在数据打包转发后,对其进行接收,处理,而没有关注过数据的序列化,反序列化,以及参数格式问题等,今天在这篇博客进行相关整理:Question1:发送ajax异步请求时的两种数据格式:HTTP请求中的Content-Type字段是指http/https发送信息至服务器的内容编码类型,表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据,今天要

2021-06-29 21:24:29 136

原创 Servlet工作原理

Servlet容器:我们以大家最为熟悉的Tomcat为例来介绍Servlet容器时如何管理Servlet的。Tomcat容器分为4个等级,真正管理Se'rv

2021-06-18 16:22:57 294

原创 力扣#12 整数转罗马数字(难度:中等)

题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。

2021-06-17 14:08:03 128

原创 力扣#8 字符串转换整数(难度:中等)

题目:请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步...

2021-06-16 10:46:11 87

原创 力扣#6 Z字形变换 (难度:中等)

题目:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

2021-06-11 15:08:04 100 1

原创 力扣#5 最长回文子串 (难度:中等)

题目:给你一个字符串 s,找到 s 中最长的回文子串。

2021-06-10 11:14:15 566 1

原创 力扣#2 两数相加(难度:中等)

题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。...

2021-06-09 16:21:05 989 1

空空如也

空空如也

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

TA关注的人

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