自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【栈】Leetcode 71. 简化路径【中等】

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;任意多个连续的斜杠(即,‘//’)都被视为单个斜杠 ‘/’。对于此问题,任何其他格式的点(例如,‘…给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。构建简化后的路径: 使用栈中的部分重新构建简化后的路径,确保路径以 / 开头并且各部分之间只有一个 /。拆分路径: 使用斜杠 / 将路径字符串拆分为多个部分。:在规范路径中,多个连续斜杠需要用一个斜杠替换。

2024-05-23 11:14:42 283

原创 【数组】Leetcode 452. 用最少数量的箭引爆气球【中等】

在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。要解决这个问题,需要明白怎么能覆盖更多的气球,就是要尽可能多地让弓箭覆盖气球的直径区间,每次弓箭一定在某个气球的最右端。-在x = 6处射出箭,击破气球[2,8]和[1,6]。

2024-05-23 10:33:18 166

原创 Kubernetes使用NFS实现数据持久化

PV/PVC 里指定了 storageClassName 是 nfs,节点上也安装了 NFS 客户端,所以 Kubernetes 就会自动执行 NFS 挂载动作,把 NFS 的共享目录 /tmp/nfs/1g-pv 挂载到 Pod 里的 /tmp,完全不需要去手动管理。在 NFS 服务器的 /tmp/nfs 目录里又创建了一个新的目录 1g-pv,表示分配了 1GB 的可用存储空间,相应的,PV 里的 capacity 也要设置成同样的数值,也就是 1Gi。

2024-05-22 18:27:36 258

原创 【数组】Leetcode 57. 插入区间【中等】

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。在 intervals 中插入区间 newInterval,使得 intervals 依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。

2024-05-22 13:34:14 277

原创 【数组】Leetcode 228. 汇总区间【简单】

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x。给定一个 无重复元素 的 有序 整数数组 nums。

2024-05-22 11:24:38 121

原创 CentOS部署NFS

给 NFS 指定一个存储位置,也就是网络共享目录。NFS 服务器,检查共享目录 /tmp/nfs,应该会看到也出现了一个同样的文件 x.yml,说明 NFS 安装成功了。在节点上可以用 showmount 检查 NFS 能否正常挂载,注意 IP 地址要写成 NFS 服务器的地址。

2024-05-21 18:54:16 318

原创 Kubernetes高级对象PersistentVolume、PersistentVolumeClaim、StorageClass

作为存储的抽象,PV 实际上就是一些存储设备、文件系统,比如 Ceph、GlusterFS、NFS,甚至是本地磁盘,管理它们已经超出了 Kubernetes 的能力范围,所以,一般会由系统管理员单独维护,然后再在 Kubernetes 里创建对应的 PV。PVC 是给 Pod 使用的对象,它相当于是 Pod 的代理,代表 Pod 向系统申请 PV。Pod 里的容器是由镜像产生的,而镜像文件本身是只读的,进程要读写磁盘只能用一个临时的存储空间,一旦 Pod 销毁,临时存储也就会立即回收释放,数据也就丢失了。

2024-05-21 17:06:23 843

原创 【矩阵】Leetcode 289. 生命游戏【中等】

每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。生命游戏(Game of Life)中的细胞状态是基于其周围八个邻居细胞的状态来更新的。根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。1、 首先遍历所有细胞,计算每个细胞的下一个状态并用特殊的标记记录在当前网格中,以避免对后续计算的干扰。

2024-05-21 11:40:12 445

原创 【哈希】Leetcode 219. 存在重复元素 II【简单】

空间复杂度:使用了一个哈希表来存储元素及其索引, 最坏情况下需要存储 n 个元素,因此空间复杂度为 O(n)时间复杂度:遍历数组一次,时间复杂度为 O(n),其中 n 是数组的长度。

2024-05-21 10:10:30 122

原创 【矩阵】Leetcode 36. 有效的数独【中等】

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。时间复杂度:遍历整个数独棋盘,时间复杂度为 O(1),因为数独棋盘的大小是固定的 9x9。空间复杂度:使用了三个固定大小的布尔数组,空间复杂度为 O(1)。

2024-05-20 11:41:27 313

原创 【哈希】Leetcode 202. 快乐数【简单】

其中 n 是输入数字。由于每次计算平方和时数字变小,所以不会有非常大的循环。时间复杂度: 在最坏的情况下,每个数字在集合中最多出现一次,时间复杂度为。如果 n 是 快乐数 就返回 true;不是,则返回 false。空间复杂度:使用了一个HashSet来存储出现过的数字,空间复杂度为。编写一个算法来判断一个数 n 是不是快乐数。,因为数字的平方和在不断变小。

2024-05-20 11:12:04 192

原创 Kubernetes集群部署实践

Ingress 使用的是 HTTP 路由规则,用 IP 地址访问是无效的,所以在集群外的主机上必须能够识别我们的“wp.test”域名,也就是说要把域名“wp.test”解析到 Ingress Controller 所在的节点上。WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80;因为 WordPress 的 Service 对象是 NodePort 类型的,我们可以在集群的每个节点上访问 WordPress 服务。比如一个节点的 IP 地址是。

2024-05-17 18:39:05 837

原创 【子串】Leetcode 6. Z 字形变换【中等】

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。3、再把COD按顺序放入res[0],res[1],res[2],如果还有字符,输入:s = “PAYPALISHIRING”, numRows = 3。输入:s = “PAYPALISHIRING”, numRows = 4。1、先把LEE按顺序放入res[0],res[1],res[2]输出:“PAHNAPLSIIGYIR”输出:“PINALSIGYAHRPI”2、再把T按顺序放入res[1]

2024-05-17 11:48:06 495

原创 【哈希】Leetcode 290. 单词规律【简单】

指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。(ps:就是字符和空格分隔出来的字符串映射)输入:pattern = “abba”, s = “dog cat cat fish”

2024-05-17 10:40:22 223

原创 Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller

同样的,Ingress 也只是一些 HTTP 路由规则的集合,相当于一份静态的描述文件,真正要把这些规则在集群里实施运行,还需要有另外一个东西,这就是 Ingress Controller,它的作用就相当于 Service 的 kube-proxy,能够读取、应用 Ingress 规则,处理、调度流量。Service 比较适合代理集群内部的服务。和Service 对比,虽然都是把请求转发到了集群内部的 Pod,但 Ingress 的路由规则不再是 IP 地址,而是 HTTP 协议里的域名、URI 等要素。

2024-05-16 15:15:21 335

原创 【字符串】Leetcode 12. 整数转罗马数字【中等】

如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。

2024-05-16 11:36:22 355

原创 【字符串】Leetcode 13. 罗马数字转整数【简单】

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。解释: M = 1000, CM = 900, XC = 90, IV = 4.空间复杂度:O(n),使用了一个HashMap来存储罗马数字字符和对应的数值,时间复杂度: O(n),其中 n 是罗马数字字符串的长度。解释: L = 50, V= 5, III = 3.

2024-05-16 10:57:47 305

原创 Kubernetes进阶对象Deployment、DaemonSet、Service

kubectl scale 是命令式操作,扩容和缩容只是临时的措施,如果应用需要长时间保持一个确定的 Pod 数量,最好还是编辑 Deployment 的 YAML 文件,改动“replicas”,再以声明式的 kubectl apply 修改对象的状态。这些业务如果用 Deployment 来部署就不太合适了,因为 Deployment 所管理的 Pod 数量是固定的,而且可能会在集群里“漂移”,但,实际的需求却是要在集群里的每个节点上都运行 Pod,也就是说 Pod 的数量与节点数量保持同步。

2024-05-15 16:06:57 912

原创 【哈希】Leetcode 242. 有效的字母异位词【简单】

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。输入: s = “anagram”, t = “nagaram”输入: s = “rat”, t = “car”

2024-05-15 11:48:02 164 1

原创 【哈希】Leetcode 205. 同构字符串【简单】

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。空间复杂度: 使用了两个哈希表来存储映射关系,空间复杂度为O(n),其中 n 是字符串的长度。时间复杂度: 遍历字符串 s 和 t,时间复杂度为 O(n),其中 n 是字符串的长度。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。给定两个字符串 s 和 t ,判断它们是否是同构的。

2024-05-15 11:39:53 357

原创 【哈希】Leetcode 383. 赎金信【简单】

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true;否则返回 false。可以使用哈希表来解决这个问题。

2024-05-14 11:52:25 164

原创 【滑动窗口】Leetcode 209. 长度最小的子数组【中等】

子数组 [4,3] 是该条件下的长度最小的子数组。使用滑动窗口技巧解决这个问题。

2024-05-14 11:37:54 815

原创 CentOs搭建Kubernetes集群

指定了 Pod 的地址段是“10.244.0.0/16”,service的地址是 10.96.0.0/12 ,apiserver 的服务地址是“自己机器的ip”,Kubernetes 的版本号是“1.23.3”minikube 还是太“迷你”了,方便的同时也隐藏了很多细节,离真正生产环境里的计算集群有一些差距,毕竟许多需求、任务只有在多节点的大集群里才能够遇到,相比起来,minikube 真的只能算是一个“玩具”。完成之后,最好记得重启一下系统,然后给虚拟机拍个快照做备份,避免后续的操作失误导致重复劳动。

2024-05-13 18:38:42 769

原创 【双指针】167. 两数之和 II - 输入有序数组【中等】

如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。

2024-05-13 11:41:32 247

原创 【子串】151. 反转字符串中的单词【中等】

输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的。顺序颠倒且 单词 之间用单个空格连接的结果字符串。

2024-05-13 10:52:51 245

原创 【双指针】392. 判断子序列【简单】

这种预处理的方法可以大大减少每次检查的时间复杂度,因为在预处理过程中可以一次性获取到每个字符在字符串 T中的所有位置,而在检查过程中只需要根据当前字符在哈希表或数组中查找下一个位置即可,无需重新遍历字符串 T。1、一种可行的方法是对字符串 T 进行预处理,构建一个哈希表或者数组,其中键或者索引表示字符, 值表示在字符串 T 中出现该字符的所有位置。2、对于每个输入的字符串 S,可以遍历其字符,并在预处理的哈希表或数组中查找下一个字符的位置。3、如果找到了,则更新当前位置,继续查找下一个字符。

2024-05-11 14:36:21 408

原创 【双指针】28. 找出字符串中第一个匹配项的下标【简单】

第一个匹配项的下标是 0 ,所以返回 0。“sad” 在下标 0 和 6 处匹配。

2024-05-11 11:11:46 278

原创 【双指针】125. 验证回文串【简单】

给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。:“amanaplanacanalpanama” 是回文串。都属于字母数字字符。

2024-05-11 10:20:45 421

原创 【子串】58. 最后一个单词的长度【简单】

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入输出:5解释:最后一个单词是“World”,长度为 5。

2024-05-11 10:12:37 195

原创 【子串】14. 最长公共前缀【简单】

输入:strs = [“flower”,“flow”,“flight”]如果不存在公共前缀,返回空字符串 “”。

2024-05-10 11:20:16 282

原创 【贪心算法】Leetcode 134. 加油站【中等】

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。

2024-05-10 11:05:44 854

原创 【数组】Leetcode 380. O(1) 时间插入、删除和获取随机元素【中等】

/ 由于 2 是集合中唯一的数字,getRandom 总是返回 2。// 向集合中插入 2。// 从集合中移除 1 ,返回 true。// 向集合中插入 1。// getRandom 应随机返回 1 或 2。// 返回 false ,表示集合中不存在 2。// 2 已在集合中,所以返回 false。

2024-05-08 15:09:05 360

原创 【数组】Leetcode 274. H 指数【中等】

h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。如果 h 有多种可能的值,h 指数 是其中最大的那个。

2024-05-08 13:33:15 382

原创 【贪心算法】Leetcode 122. 买卖股票的最佳时机 II【中等】

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天。:在第 2 天(股票价格 = 1)的时候买入,在第 3 天。总利润为 4 + 3 = 7。这是一个典型的贪心算法问题。

2024-05-06 18:19:37 290

原创 YAML如何操作Kubernetes核心对象

对于明文配置数据, COUNT、GREETING 引用的是 ConfigMap 对象,所以使用字段“configMapKeyRef”,里面的“name”是 ConfigMap 对象的名字,也就是之前我们创建的“info”,而“key”字段分别是“info”对象里的 count 和 greeting。Volume 的定义之后,就可以在容器里挂载了,这要用到“volumeMounts”字段,正如它的字面含义,可以把定义好的 Volume 挂载到容器里的某个路径下,所以需要在里面用“

2024-05-06 18:03:25 1238

原创 【数组】Leetcode 80. 删除有序数组中的重复项 II【中等】

函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

2024-04-30 14:59:22 212

原创 【数组】Leetcode 26. 删除有序数组中的重复项【简单】

函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。

2024-04-30 14:18:05 218

原创 【数组】Leetcode 27. 移除元素【简单】

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

2024-04-30 11:14:17 177

原创 【数组】Leetcode 88. 合并两个有序数组【简单】

*注意:**最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。时间复杂度:合并过程只需一次遍历,时间复杂度为O(m + n),其中m和n分别为nums1和nums2的长度。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。空间复杂度:仅使用了常数额外空间,空间复杂度为O(1)。:需要合并 [1,2,3] 和 [2,5,6]。

2024-04-30 10:52:34 385

原创 Kubernetes 声明式语言 YAML

YAML(YAML Ain’t Markup Language)是一种可读的数据序列化语言,通常用于配置文件、数据序列化和交换格式。YAML 的设计目标是易读易写,并且能够映射到动态语言中的数据结构YA加粗样式ML 是JSON的超集,支持整数、浮点数、布尔、字符串、数组和对象等数据类型。也就是说,任何合法的 JSON 文档也都是 YAML 文档使用空白与缩进表示层次(有点类似 Python),可以不使用花括号和方括号。可以使用书写注释,比起 JSON 是很大的改进。

2024-04-29 18:14:30 680 1

空空如也

空空如也

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

TA关注的人

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