自定义博客皮肤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)
  • 收藏
  • 关注

原创 LeetCode 3186 最大施法伤害

LeetoCode地址: . - 力扣(LeetCode)这道题很直观,玩游戏的都懂,伤害最大化嘛!但是每个法术释放与否可能会影响总体的伤害,因此是从局部最优解找到全局最优解的动态规划问题!禁止释法的区间是+-2,且相同伤害的法术可以释放多次,所以很容易想到,将伤害相同的法术进行计数,并按照伤害的大小进行排序。这样就可以从最小的伤害开始考虑释放与否了。剩下的,直接看代码吧

2024-06-17 22:03:41 313

原创 LeetCode 310 最小高度树

LeetoCode地址: . - 力扣(LeetCode)可以通过归纳法证明出一棵树的最小高度树可以通过从最外面度为1的叶子节点一层一层向内遍历得到,可以使用一种称为 **中心缩减法**(或称为 **剥洋葱法**)的方法。我们将逐步解释这个方法,并证明其正确性。### 定义和问题陈述- **树**:无环连通图。- **树的高度**:从根节点到任意叶子节点的最长路径。- **最小高度树**:使树的高度最小的树。对于给定的无向树,可能存在多个根节点,使得树的高度最小。### 中心缩减法(剥洋葱法)这个方法

2024-06-17 21:41:28 510

原创 Leetcode 410 分割数组

LeetoCode地址: . - 力扣(LeetCode)将一个数组切k刀,每一块子数组求和,共k+1个数,这里面有一个最大的数Max。找一种切法,使这个Max最小。暴力解法一定是会超时的,因为包含了大量的重复计算。如果我们能够保存且借助已经算过的结果,在此基础上在更大范围的数组上计算,势必能节省更多的计算时间。这是动态规划的思路。由于Max的取值上下限已知,上限是所有数的和,下限是最小的元素,如果我们能找到一种快速逼近结果的方法,也能够很快计算出结果,这是二分的思路。试想一下,在长度为[0,l]的数组上切

2024-04-20 21:01:26 416 1

原创 Leetcode 528 按权重随机选择

LeetoCode地址: . - 力扣(LeetCode)想象题目提供的w数组里是很多根长短不一的棍子,然后我们将其按顺序排列成一条线。然后我们扔一个沙包,砸中哪一根棍子,就代表命中了那根棍子代表的数字。很显然,棍子越长,就越容易砸中。假如这五根棍子分别长1,2,3,4,5,那么合并后总长度就是1+2+3+4+5=15那么沙包扔出后可能会落在0到15之间的任何一个位置。具体来说,落到[0,1]的可能性会比落到[1,3]小,因为后者代表的区间更大,而概率最大的则是[10,15],这代表了最后一根棍子的区间。那

2024-04-14 22:27:37 359

原创 LeetCode 1438 绝对差不超过限制的最长连续子数组

LeetoCode地址: . - 力扣(LeetCode)这是一道非常好的题目,同时考察了TreeMap, 单调队列,滑动窗口。题意就是求连续子数组中最大最小元素差值绝对值不大于k的最长长度。最直观的写法就是维护一个滑动窗口,并对窗口内的元素进行排序,这样就可以随时知道窗口内的最大绝对差。给定长度为n的nums 数组,对于任意的左右下标l 和r, 0<=l<r<=n-1 当最大绝对差大于k时,我们便将窗口右移,并更新窗口内的元素。我们记录滑动过程中的最大长度,直到滑倒最右端。以下面数组为例nums = [

2024-04-07 23:01:46 537

原创 LeetCode 378 有序矩阵中第K小的元素

LeetoCode地址: . - 力扣(LeetCode)题解内容大量转载于:. - 力扣(LeetCode)题意很直观,就是求二维矩阵中所有元素排序后第k小的数。该写法不再赘述,维护一个大小为k的小顶堆,遍历矩阵所有元素进行入堆操作。时间复杂度:O(nlogk)空间复杂度:O(k)二分写法由于矩阵在行和列上都是有序的,因此左上角的元素matrix[0][0]一定是最小的,右下角的元素matrix[n-1][n-1]一定是最大的。这两个元素,我们分别记为l 和 r.以下图为例:可以发现, 任取一个

2024-04-06 18:08:49 858

原创 LeetCode 264 丑数II

LeetoCode地址: . - 力扣(LeetCode)所谓丑数就是满足: (2^x)*(3^y)*(5^z), 其中,x,y,z >= 0的数。题目要求的是求严格递增的第n个丑数。可以维护一个小顶堆,每一次拿出堆顶元素,然后分别乘以2,3,5再都扔回堆里,依次进行操作,直到第n个元素。在实现时,要注意对重复元素的处理。时间复杂度:(nlogn),堆的每次出入操作需要花费logn, 共需要n次这样的操作。额外空间复杂度: (n), 我们需要维护一个最大长度为n的堆。动态规划写法第k个丑数一定是它

2024-04-06 11:06:34 243

原创 LeetCode 973 最接近原点的K个点

LeetoCode地址: . - 力扣(LeetCode)题意简单且直观,而且是很经典的考验快速排序以及堆排序的算法题,很考验基本功。对points数组原地建立小顶堆并依次弹出第1个元素,重新调整堆顶元素,再弹出第1个。。。直到弹出前K个元素。时间复杂度: O(nlogn)额外空间复杂度:O(k)快速排序写法普通的写法是直接对整个数组排序,然后取前k个元素,然而这不是最高效的。由于我们仅需要前k个元素,而且不关注顺序,因此可以省略到k之后元素的顺序。假如我们当前左右边界分别是l和r,在快排中间步骤

2024-04-04 22:26:37 328

原创 Leetcode 73 矩阵置零

LeetCode地址: . - 力扣(LeetCode)矩阵是m*n的,如果某个元素(i,j)等于0,则将第i行和第j列的所有元素都置零。既然如此,我们可以便利每一个元素,并记录下哪一行哪一列有零。记录完毕后,重新遍历整个矩阵,如果其所在行或者所在列存在零,则置为零。所以问题变成了,在哪里保存这些信息: 哪一行哪一列有零我们可以通过一个m长和n长的数组来保存这些信息,这会产生O(m+n)的额外空间复杂度。我们也可以把这些信息直接保存在矩阵的第一列和第一行!代价是我们要提前遍历第一行和第一列,检查其是否存在零

2024-04-01 22:02:32 373

原创 Leetcode 128 最长连续序列

LeetCode地址: . - 力扣(LeetCode)题目要求O(n)的时间复杂度,也就不能使用排序或者暴力枚举的方法解题。暴力枚举的缺陷在于重复计算。我们通过以下数列来说明存在哪些重复计算: 4,3,2,1。第一个数是4, 4+1=5, 5不存在,累加结束;最大连续长度是1第二个数是3,3+1=4,4存在;4+1=5, 5不存在,累加结束;最大连续长度是2第三个数是2, 2+1=3,3+1=4,4+1=5, 5不存在,累加结束;最大连续长度是3第四个数是1,1+1=2,2+1=3,3+1=4,4+1=5

2024-04-01 20:43:58 314

原创 Leetcode 239 滑动窗口最大值

LeetoCode地址: . - 力扣(LeetCode)题意是很好理解的,一个固定长度(k)的滑块从一个数组的左端一步一步向右滑,然后挑出滑块盖住的那些数字中最大的,组成的数组就是结果。难点在于,当滑块移动时,左端的数字会被遗弃,如果遗弃的刚好是最大的数字,则要从剩下的k-1个元素以及右端新覆盖的元素里找到最大的。想要让时间复杂度低,需要找到一种低成本的方式维护这些数字的有序性。这样,即便最大的元素遗弃了,第二大的元素也唾手可得。如何得到一个单调递减的元素列 array呢?假设当前滑块的左下标是l,右下标

2024-03-16 12:31:13 456 1

原创 Leetcode.901 股票价格跨度

LeetoCode地址: . - 力扣(LeetCode)价格跨度的定义在题目中很明确,就是韭菜持有一只股票且该股票保持连续上涨最大的天数。直观的想,我们可以保存第一天到当前天的所有股价,并一天一天往前找单调递减的连续天数。但是考虑这样一个股价序列, 1,2,3,4,5,6,7,在计算6和7的股价跨度时,会存在大量的重复计算。因为计算7的跨度时候,需要遍历到1,计算6的跨度时,也需要遍历到1。让我们换一个思路。假如后一天的股价比前一天小,则显然它的跨度就是1,此时我们需要将该天的股价和跨度缓存起来,因为后一

2024-02-27 20:00:53 396

原创 Leetcode. 739 每日温度

LeetoCode地址: . - 力扣(LeetCode)题意很好理解,找到比每日温度更高的温度的已过天数的偏移量。如果找不到,则设为0。最直观的想法是,从每一天开始向后一天一天找,直到找到更高温度的那一天。但是这种做法时间复杂度过高,有太多重复的操作,因此需要找更优的算法。容易发现,当遍历到第i天,温度为25度的前提下,如果第i+1天的温度比25度高,则第i天的结果很好计算,即是1. 如果第i+1天的温度没超过2度,则暂时得不到结果,那不如先将第i+1天的温度暂存起来,继续看第i+2天,如果温度继续走低,

2024-02-24 19:04:37 497

原创 Leetcode 85. 最大矩形

LeetoCode地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台该题是84题的升级版。84题给出了一个一维数组,即一行数据,每个元素是高度。而该题则是给出了二维数组,只需我们将每一行的高度自行求出,即可以运用相同的算法解决。该题目的难点在于思维模型上,如何借助单调栈和数组给出的信息进行快速求解。以示例1为例:如果将每一行的1的高度(即连续的1的长度)以橙色标注出来,会发现只包含1的最大矩形出现在第三行里,2*3=6.不难发现,每一个矩形都是由一列一列1组成的,我们要找到的就是能够组成最

2024-02-03 16:33:29 989 1

原创 Leetcode. 212 单词搜索II

LeetoCode地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台该题目也是匹配字符串,但是高级一点。首先,要找到的字符串不再是单一一个,而是一个列表words,最大有3 *10^4个。其次,我们要在一个二维字符网格board上找寻,不再是若干个单词,即一个一维的字符数组。有点像需要棋盘上从任何一个位置开始走出一条蛇形路径,该路径刚好匹配字符串word。而每一步该怎么走呢?有四个方向,当然就有四个走法,到下一个位置后,同样有四种走法。那终止条件是什么?撞墙或者是四个方向的位置都已经用过了

2024-01-28 21:35:09 683

原创 Leetcode 1268 搜索推荐系统

LeetoCode地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台这道题的题意不难理解,在我们使用搜索引擎的每一天都会遇到,不需要输入完整的关键词,哪怕仅仅只输入一个字,搜索引擎就会自动返回若干以这个字开头的若干查询结果,比如最近爆火的《繁花》电视剧该题目是搜索引擎的极致简化版,每个字符都是a-z这26个小写字母。如果你做过Trie 树相关的题目,很容就能联想到该题目可以以同样的方式求解,当我们建立好Trie 树之后,只要按照searchWord的每个字符进行逐个匹配直到最后一个字符,这

2024-01-27 11:01:07 1969

原创 LeetCode 211.添加与搜索单词 - 数据结构设计 题解

LeetoCode地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台该题是LeetCode 208.实现Trie(前缀树) 题解 的进阶与变体。本质还是通过Trie树插入与查找字符串。但是该题引入了一个新字符 '.', 它可以替代任何a到z这个26个小写字母。所在在遍历过程中,不再是一条单一的路径,而是应该沿着树的所有可能分枝进行深入,想起什么了没?没错!就是树的深度遍历。在进行DFS深度优先遍历时,我们并不需要枚举所有的可能性,毕竟题目仅仅只是需要确定是否存在某字符串,而不是找出所有的

2024-01-21 12:10:16 474

原创 LeetCode 208.实现Trie(前缀树) 题解

LeetoCode地址: . - 力扣(LeetCode)题目已经清晰的告诉了我们要实现Trie,以及它的优点,那么这些优点解决了什么问题,为什么传统的方法不行?现在让我们还原一下问题: 保存一些字符串,并判定新给出的字符串是否是这些字符串中的一员,或者是其中某一员的前缀。举个例子,保存"app", "apple", "application"这三个字符串,并判断"app", "append"是否是这些字符串组成的集合里的元素,判断"app", "appl" "appc" 是否是这些字符串组成集合的某个元素

2024-01-13 21:15:18 857

原创 LeetCode 547.省份数量 题解

如果我们能从isConnected的第一个子数组开始遍历,每遍历到一个城市的编号,就再深入一层去遍历该编号对应于isConnected中的那个子数组,递归的操作,并记录下所有已经遇到的城市编号,递归的终止条件就是已经该城市已经遇到且处理过了。时间复杂度:O(n^2), 最复杂的操作是递归找城市的过程,深度为城市的个数n,每次递归要循环的子数组大小为城市个数n,相乘得到n^2.同时,题目的输入是一个数组,数组长度是城市个数,每个元素都是一个数组,代表了这个城市和其他哪些城市相连。,这里就不重复赘述了。

2024-01-06 13:18:59 830

原创 LeetCode 721.账户合并 题解

LeetoCode地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台原题使用的是名称和账号的邮箱地址,好多字母,可能有些人会不太好理解。我换了一种场景:联想一下,诸如《魔兽世界》《地下城与勇士》这样的网络游戏,每个玩家都可以创建多个游戏角色,每个游戏角色的ID都是服务器唯一的。注意,玩家的姓名在现实生活中是完全可以重复的。在下图上半部分里,有一些玩家: 两位周小董, 两位张小涵,他们都拥有一些游戏角色。按照题目的意思,因为两个周小董都拥有角色《战斗至死》,所以这两个周小董其实同一个人,他们

2024-01-01 22:36:33 951

原创 HomeBrew 安装

因为自己用的Macbook上的homebrew很难用,安装和更新软件时卡在一半,遇到如下错误。本质是因为某种神秘的东方力量导致我们与外部的连接受到了小小的限制。要解决这个办法,我们可以卸载homebrew,并使用国内镜像重新安装。具体参考。

2023-10-03 21:51:04 39

原创 Docker 容器间网络通信指令

本文中笔者记录了实现Docker容器间单向通信和双向通信用到的指令和示例代码。

2023-08-18 22:46:47 58

原创 Docker 构建Web静态页面镜像 并执行

本篇文章主要以记录笔者学习Docker的笔记,以指令为主。

2023-08-16 20:32:21 136

原创 CentOS 7 安装Docker 命令行小结

本文总结了在 CentOS 7 安装并运行 HelloWorld 示例执行的命令行指令,用于查漏补缺。

2023-08-13 22:22:24 40

原创 VirtualBox 7.0.10 安装 CentOS 7

这是一篇介绍使用 VirtualBox 虚拟机工具安装 CentOS 7 的介绍视频。笔者想尝试在本地运行并测试一些软件开发工具,例如Docker, k8s,以提升自身的技能水平;同时,又苦于自己的狗记性,用完就忘,因此想把实现过程中遇到的问题和解决方案记录下来。技术水平有限,如有错误,请多多指正。

2023-08-13 22:06:45 222

原创 菜虚鲲教你学多线程

菜虚鲲教你学多线程基础背景线程与进程线程的几种状态新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入背景不知道...

2019-05-06 17:36:44 289

原创 LeetCode算法题之9:Palindrome Number

LeetCode之9:Palindrome Number问题描述:判断一个数字式否是回文数字,即判断它是否是对称的。原题地址问题的陷阱与难点:无缺陷代码(79.35%) public boolean isPalindrome(int x) { if (x &lt; 0) { return false; } List&lt;Integer&gt; ...

2019-02-25 17:08:42 132

原创 LeetCode算法题之8:String to Integer (atoi)

LeetCode之9:String to Integer (atoi)问题描述:将字符串转换为合法的数字。题目地址问题的陷阱与难点:思路很好想,但是鲁棒性,鲁棒性,鲁棒性!!!缺陷代码(99.50%)public int myAtoi(String str) { if (str == null || str.length() ==0) { return 0;...

2019-02-24 16:42:47 127

原创 LeetCode算法题之7:Reverse Integer

LeetCode之6:Reverse Integer问题描述:返回一个整形数字的倒序下的数字。题目地址问题的陷阱与难点:思路很好想,但是可能会漏掉几个越界判断。缺陷代码(62.81%) public int reverse(int x) { int negative; negative = x &lt; 0 ? -1 : 1; //记录数字的正负 Lon...

2019-02-24 14:19:10 131

原创 LeetCode算法题之6:ZigZag Conversion

LeetCode之6:ZigZag Conversion问题描述:返回一个字符串锯齿形状下的字符串序列。题目地址问题的陷阱与难点:思路题,怎样用合适的数据结构保存锯齿形状。缺陷代码(58.27%)public String convert(String s, int numRows) { if (s == null || s.length() &lt;= 0 || num...

2019-02-22 15:39:16 121

原创 LeetCode算法题之5:Longest Palindromic Substring

LeetCode之5:Longest Palindromic Substring问题描述:查找一个字符串的最长对称子序列。问题的陷阱与难点:能否在较短时间内理清逻辑,快速写出代码。普通的向两边扩展查找最长字串的方法比较好想,但是存在较多重复操作。dp的解法比较难想出来。缺陷代码分析(41.98%)/** * @program: xiaolajiao001 * @descr...

2019-02-21 15:12:43 148

原创 LeetCode算法题之3:Longest Substring Without Repeating Characters

LeetCode之3:Longest Substring Without Repeating问题描述:查找一个字符串的最长不重复子序列。问题的陷阱与难点:能否在O(N)时间内完成搜索。能否在较短时间内理清逻辑,快速写出代码。缺陷代码分析(优于51.30% 在线提交)import java.util.*;class Solution { public int lengt...

2019-02-18 19:31:07 102

原创 LeetCode算法题之2:Add Two Numbers

LeetCode之2:Add Two Numbers问题描述:将两个个位数数字组成的链表合并为一个,模拟加法器。问题的陷阱:在考虑进位问题时想的不全名,漏掉两个链表最终同时为空,而产生进位,导致最终少加一位数这一问题。缺陷代码分析/** * Definition for singly-linked list. * public class ListNode { * in...

2019-02-18 16:18:45 149

原创 解决git@github.com: Permission denied (publickey).问题

Git解决小问题记录问题描述解决途径问题描述在学习Git的过程中,我创建了两个GitHub账号,一个用于学习,一个用于工作,并使用同一台电脑进行远程Git仓库的维护。由于Git的远程连接是基于SSH的,不可避免的要管理多套SSH公钥/私钥。否则当你向多个Github账号的仓库中push时,会遇到如下错误veatheroe:micky aoyi$ git push -u origin mast...

2019-02-13 11:13:46 3954

原创 Gemoc创建特定领域建模语言步骤(简略版)

起步该文用于使用Gemoc这一基于Eclipse的特定领域语言(Domain Specific Language,dsl)创建平台进行创建dsl的操作步骤,参考了使用Gemoc创建一个fsm。使用的Gemoc版本是2.4.0-SNAPSHOT. 由于步骤繁琐,本文仅用于提醒自己以及同学在遗忘之际回忆之用,不会提供过多细节讲解,还望周知。语言工作台步骤1.首先创建Ecore元模型,同时也...

2019-01-08 21:28:54 984 2

原创 Mac安装Maven,并添加远程仓库中不存在的jar包

动机跟同学学习一个开源的分布式项目,但是在最开始就卡住了。作者添加了一些自定义的、在远程仓库找不到的插件jar包,所以需要将该jar的原上项目文件clone到本地,并通过mvn命令安装到本地仓库之中。又因为最近更换到了Mac环境下,对新系统下的很多操作都不熟悉,Maven又没有安装,所以在此记录一下解决这个问题的整个流程。步骤       安装Homebrew           ...

2019-01-07 17:06:53 731

原创 latex 算法分页问题

写毕业论文的时候,有一个算法太长了,一页装不下,所以产生分页显示的需求参考的博客还有社区资源如下:Latex.算法分页;Algorithm tag and page break;注意的是\usepackage{algorithmic}\usepackage{algorithm,float}%这样的引包方式对我来说有错误,不能正确识别\ENDWHILE这样的命令%必须要...

2018-08-30 17:40:04 8507

空空如也

空空如也

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

TA关注的人

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