自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 代码随想录算法训练营第九天| 151. 反转字符串中的单词、55. 右旋字符串(第八期模拟笔试)、28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串

这一题是 KMP 算法的应用. KMP 算法的思想是, 在字符串 A 中查找是否存在 B 字符串. 最直观的暴力解法就是, 遍历 A 中的每一个字符, 当 A 中的某个字符和 B 中的第一个字符相同时, 则开始遍历 A 中当前字符往后的字符, 如果接下来的字符都和 B 中接下来的字符相同, 则知道 A 中存在一个 B 字符串. 如果 A 接下来的字符中, 有某个字符和 B 中的某个字符不相同, 这时候就要跳过 A 中和 B 第一个字符相同的那个字符, 继续往下匹配.

2024-07-28 17:40:26 711

原创 [二刷] 代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串 II、54. 替换数字(第八期模拟笔试)

这一话在字符串转上套了一层壳, 需要计算当前需要反转的字符串的索引区间. 核心思想是: 从 [startIndex, startIndex + k] 这一段是需要反转的, 如果 startIndex + k > word.length - 1, 说明已经超过最大可反转的字符串了, 因此应该是 [startIndex, word.length - 1], 翻转后需要更新字符串的起始位置 startIndex += 2k.

2024-07-26 12:23:10 260

原创 [二刷] 代码随想录算法训练营第七天| 454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和

三数之和和四数之和的双指针思想其实都是遍历所有的元素, 遍历的方法是, 固定最左边的 n - 2 个元素, 这 n - 2 个元素使用暴力遍历的方式, 剩下的两个元素则使用 left + right 的双指针, 通过 left++ & right-- 的方式逼近结果.三数之和和四数之和都是双指针思维, 三数之和用哈希表也可以做, 但是哈希表的生成稍微有点小技巧.从四个数组里分别选出一个数, 计算一共有多少种组合, 可以让选出来的四个数的和等于预期的值.四数之和与三数之和一样, 不过剪枝的操作会多一些.

2024-07-25 14:48:25 448

原创 [二刷] 代码随想录算法训练营第五天| 哈希表理论基础、242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

使用 Set 来去重是我没想到的, 这样做简单了很多. 当然如果限制数字在 1-1000 范围内的话, 就可以不用 Set, 用 int[] numbers = new int[1001], 查找的效率会高很多.一开始没关注到输入的两个字符串中的字符只包含小写字母, 因此用一个 Map<Character, Integer> 来存储对应的字符出现的次数, 效率稍微低了一些.哈希表(散列表)是一个可以将对象转换成关键码, 通过关键码获取到对应值的数据结构. 常见的实现方式为数组.

2024-07-24 11:52:02 473

原创 [二刷] 代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II

这一题完全忘记了, 如何知道倒数第 N 个节点是谁呢?核心思想是使用三个节点记录住需要交换的两个节点, 以及这两个节点之前的一个节点. 因为要交换的两个节点交换完顺序后, 他们之前的节点需要链接到这两个节点的后者, 比如原来的顺序是 ... -》A-》B-》C, B 和 C 交换完之后, 需要将 A 指向 C, 即变成 ... -》A -》C -》B.如果需要对链表做增加、删除、修改操作的话, 使用虚拟头节点会更方便.同时如果不使用虚拟头节点的话, 需要判断的逻辑就非常多.二刷的时候环形链表就比较简单了.

2024-07-23 16:12:22 899

原创 [二刷] 代码随想录算法训练营第三天| 203. 移除链表元素、707. 设计链表、206. 反转链表

核心思想是, 记录住三个节点: 前一个节点, 当前节点, 下一个节点. 对于头节点, 前一个节点是空节点. 因此 Node pre = null;整体没有遇到什么困难, 但是对于链表遍历的代码掌控能力还是不够, 什么时候用 while(current.next!这时候如果添加一个虚拟节点指向头节点, 就不需要关心头节点是否被删除, 所有节点都一视同仁, 最后返回的是 virtualNode.next 即可.要删除一个节点, 必须知道它的上一个节点是谁, 删除的是头节点, 还需要更新头节点.

2024-07-22 13:41:03 302

原创 [二刷] 代码随想录算法训练营第二天| 209. 长度最小的子数组、59. 螺旋矩阵 II

利用 int circle 记录一下当前的螺旋圈数, 对于正方形螺旋的最外边, 顶边的横坐标就是从上往下下层 circle 层, 底边就是横坐标左边就是从下往上压缩 circle 层(n - circle), 右边就是纵坐标从右往左压缩 circle 层(n - circle), 左边就是纵坐标从左往右推进 circle 层.

2024-07-21 15:37:53 301

原创 [二刷] 代码随想录算法训练营第一天[下]| 27. 移除元素、26. 删除有序数组中的重复项、283. 移动零、844. 比较含退格的字符串、977. 有序数组的平方

这一题的本质在于, 一个排好序的非降序数组, 从最左边往中间(存在负数的情况), 从最右边往中间, 数字的平方是在递减的. 因此利用双指针, 每次把平方大的数, 放在新创建的数组的末尾, 数组的末尾指针往前移动即可.这一题二刷的时候依旧不会做, 一开始先入为主认为在双指针的题目下, 这一题肯定也是快慢指针的写法. 过程中发现异常的时候也意。, 然而想着这样写会比较复杂, 时间复杂度不知道是否能满足, 脑子就乱了. 因此一定要意识到,一开始尝试复用原始的数组, 发现不行, 一定要新创建一个数组.

2024-07-20 12:05:50 351

原创 [二刷] 代码随想录算法训练营第一天[上]| 数组理论基础、704. 二分查找、27. 移除元素、34. 在排序数组中查找元素的第一个和最后一个位置、69. x 的平方根 、367. 有效的完全平方数

这一题的关键在与寻找左边界和右边界, 通过双指针寻找左右边界:寻找左边界: 只有当明确 target 位于 middle 的右侧时(number[middle] < target), 才让 left = middle + 1, 同时让 right 逼近 left. 这样才不会错过 middle 左侧的和 target 相同的元素. 同时如果 target 在列表中不存在的话, 最终 right 会穿透 left, 并且 left > right.

2024-07-20 11:50:52 441

原创 代码随想录算法训练营第六十三天| 最短路径总结篇、图论总结篇

最短路径问题刚开始看的时候, 可能是 N 阳了, 高烧不停的在 38.2 到 39.2 之间波动, 烧的很厉害的时候会疯狂的出汗, 然后体温就下降了. 到现在三周了, 还是咳嗽喉咙有点疼, 但是已经恢复的不少了.最短路径里一开始就被概念给吓晕了, 有向图、无向图、连通图、强连通图、连通分量. 确实吓了我一大跳. 我感觉和我没有这部分的基础是有关系的.让我想一想, dfs 和 bfs 的区别?

2024-07-16 22:43:01 627

原创 代码随想录算法训练营第六十二天| 127. 骑士的攻击 (Astar 算法)

启发式搜索函数很妙, 像是套了一个壳一样. 核心思想是, 从起点开始往八个能走的方向遍历, 然后计算出下一个节点距离原点的真实路径, 再计算一下原点距离终点的距离.现给定骑士的起始坐标和目标坐标,要求根据骑士的移动规则,计算从起点到达目标点所需的最短步数。接下来的 n 行,每行包含四个整数 a1, a2, b1, b2,分别表示骑士的起始位置 (a1, a2) 和目标位置 (b1, b2)。核心思想是, 选择距离原点和终点最近的节点优先遍历, 直到达到终点为止.天启骑士需要的是欧拉公式.

2024-07-15 21:05:13 426

原创 代码随想录算法训练营第六十一天| 96. 城市间货物运输 III (Bellman_Ford 单源限制节点最短路径算法)、97. 小明逛公园 (Floyd 算法)

核心的思想就是, 如果每次只展开和出发站点最近的边, 那么经过展开 k + 1 条边(k 为允许经过的车站数量), 就能计算出从出发站点到目的站点的最短距离. 我个人认为, 目前的算法是允许在负权回路里转圈圈的.输出一个整数,表示从城市 src 到城市 dst 的最低运输成本,如果无法在给定经过城市数量限制下找到从 src 到 dst 的路径,则输出 "unreachable",表示不存在符合条件的运输方案。接下来的 Q 行,每行包含两个整数 start, end,表示一个观景计划的起点和终点。

2024-07-12 21:08:45 1029

原创 代码随想录算法训练营第六十天| 94. 城市间货物运输 I (SPFA )、95. 城市间货物运输 II

之前的 Dijkstra 算法, 需要路径权值非负数, 因为一旦访问过的节点, 就不会再访问了. 对于 Dijkstra 算法, 如果一个节点距离原点路径权值的和为 N, 且当前的 N 是所有可触达的节点中最小的, 那么从其他节点再触达当前节点, 路径权值的和一定是小于等于 N 的. 因此在 Dijkstra 中, 一个节点不能多次访问.如果该整数是负数,则表示实现了盈利。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。

2024-07-11 21:31:30 1114

原创 代码随想录算法训练营第五十九天| 47. 参加科学大会(第六期模拟笔试) dijkstra(堆优化版)、94. 城市间货物运输 I (Bellman_ford 算法)

dijkstra 优化算法的核心是, 之前需要通过 for 循环遍历 minDist 获取到未处理过的, 距离出发站点最近的节点. 如果我们将 minDist 中的元素添加到列表中, 每次都按值的大小排序, 这样每次获取栈顶元素即可, 得到的结果和循环遍历 minDist 后得到的结果是一致的. 同时因为是有向图, 并且无负权回路, 因此每次处理完一条边, 这条边就不会被再次处理到. 不会产生死循环.请找出从城市 1 到城市 n 的所有可能路径中,综合政府补贴后的最低运输成本。

2024-07-11 17:34:09 861

原创 代码随想录算法训练营第五十八天| 117. 软件构建、47. 参加科学大会

某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理文件 A 之前处理文件 B (0 <= A, B <= N - 1)。找到所有入度为 0 的节点, 保存到列表中. 遍历所有入度为 0 的节点, 将该节点添加到结果集合中, 同时将该节点指向的节点的入度减 1. 如果该节点入度变为 0, 则也添加到入度为 0 的节点列表中.输出共一行,如果能处理成功,则输出文件顺序,用空格隔开。

2024-07-10 17:22:28 773

原创 代码随想录算法训练营第六十一天| 53. 寻宝 Prim 算法、53. 寻宝 Kruskal 算法

3. 最严重的是, 一开始完全理解错了 prim 算法的意图, 以为是想找到一条从节点 1 出发到 节点 n, 最短的路径. 实际上找的是连接所有节点后, 路劲最短的连接方式.完全理解错了, 我以为是找到一条从节点 1 出发到节点 n , 路上要经过所有节点的路径最短的方案. 题目要求的是将所有城市连接在一起后, 要求建造的公路是的长度是最短的.不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。顶点编号是从1到V。

2024-07-09 23:27:43 789

原创 代码随想录算法训练营第六十天| 108. 冗余连接、109. 冗余连接II

3. 第 “2” 步中, 如果存在入度为 2 的节点, 删除进入该节点的其中一条边后如果不存在环, 则说明删除有效, 否则则需要删除另外一条边. 而判断环需要使用到并查集. 因为如果存在环的话, 连接尾首的那条边, 在并查集中就会发现首尾两个节点已经在集合中, 并返回发现环.输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。输出一条可以删除的边,若有多条边可以删除,请输出标准输入中最后出现的一条边。

2024-07-09 19:41:25 1237

原创 代码随想录算法训练营第六十天| 并查集理论基础、107. 寻找存在的路径

核心思想是将所有节点通过整数数组int[] father串起来, father[u] 表示 u 连接到的顶点. 如果 u 和 v 连接到相同的顶点, 则说明 u 和 v 在同一个集合中.输出一个整数,代表是否存在从节点 source 到节点 destination 的路径。如果存在,输出 1;给定一个包含 n 个节点的无向图中,节点编号从 1 到 n (含 1 和 n )。第一行包含两个正整数 N 和 M,N 代表节点的个数,M 代表边的个数。基础理论, 好奇加不知所以.并查集基础理论基础应用篇.

2024-07-08 17:54:58 406

原创 代码随想录算法训练营第五十九天| 110. 字符串接龙、105. 有向图的完全可达性、106. 岛屿的周长

从 beginStr 开始, 从左往右替换 beginStr 中的每一个字符, 如果替换后的字符串 word 在 strList 中存在对应的字符串, 说明可以从 beginStr 改变一个字符到达对应的字符串. 使用一个 Map<String, Integer> 记录住到达 word 的路劲长度. 这样不停的遍历, 直到第一次遇到 word.equals(endStr) 则找到了对应的路劲.现从 1 号节点开始,如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。

2024-07-08 14:15:55 1098

原创 代码随想录算法训练营第五十二天| [KC]100. 岛屿的最大面积、101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题

给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。深搜一下, 每次遇到没有访问过的陆地, 就把面积加 1, 同时继续遍历与该节点相邻的陆地, 将相邻陆地的面积累加到当前陆地上, 并返回给上一级陆地, 最终完成统计.矩阵的左边界和上边界被认为是第一组边界,而矩阵的右边界和下边界被视为第二组边界。输出共有多行,每行输出两个整数,用一个空格隔开,表示可达第一组边界和第二组边界的单元格的坐标,输出顺序任意。如果不存在岛屿,则输出 0。

2024-06-28 12:49:22 930

原创 代码随想录算法训练营第五十一天| 98. 所有可达路径、99. 岛屿数量 深搜版、99. 岛屿数量 广搜版

例如正确的答案是 `1 3 5`,而不是 `1 3 5 `, 5后面没有空格!

2024-06-27 23:42:15 723

原创 代码随想录算法训练营第五十天| 739. 每日温度、496. 下一个更大元素 I 、503. 下一个更大元素 II 、42. 接雨水 、84. 柱状图中最大的矩形

给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。

2024-06-26 12:29:09 1065

原创 代码随想录算法训练营第四十七天| 647. 回文子串、516. 最长回文子序列

给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。s = "abc"3三个回文子串: "a", "b", "c"s = "aaa"66个回文子串: "a", "a", "a", "aa", "aa", "aaa"

2024-06-25 23:56:29 315

原创 代码随想录算法训练营第四十六天| 53. 最大子数组和、392. 判断子序列、583. 两个字符串的删除操作、583. 两个字符串的删除操作、72. 编辑距离

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的求解。

2024-06-23 11:44:32 1182

原创 代码随想录算法训练营第四十六天| 714. 买卖股票的最佳时机含手续费 、300. 最长递增子序列、718. 最长重复子数组 、1143. 最长公共子序列、1035. 不相交的线

给定一个整数数组prices,其中prices[i]表示第i天的股票价格;整数fee代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。8能够达到的最大利润:在此处买入 prices[0] = 1在此处卖出 prices[3] = 8在此处买入 prices[4] = 4。

2024-06-21 12:06:59 748

原创 代码随想录算法训练营第四十五天| 122. 买卖gp的最佳时机 II 、123. 买卖gp的最佳时机 III 、188. 买卖gp的最佳时机 IV 、309. 买卖gp的最佳时机含冷冻期

买入状态: dp[i][0] = max(dp[i - 1][0], max(dp[i - 1][1], dp[i - 1][3]) - prices[i]) // 卖出后有冷冻期,因此 2 状态不能买。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。卖出状态: dp[i][1] = max(dp[i - 1][1], dp[i - 1][3])dp[i][0] = dp[i - 1][0];// 其实就是等于0。

2024-06-20 12:10:27 948

原创 代码随想录算法训练营第四十四天| 139. 单词拆分、 56. 携带矿石资源(第八期模拟笔试)、198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III、121. 买卖股票的最佳时机

给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。true返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。true返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。注意,你可以重复使用字典中的单词。

2024-06-19 17:27:35 851

原创 代码随想录算法训练营第四十三天| 377. 组合总和 Ⅳ、57. 爬楼梯(第八期模拟笔试)、322. 零钱兑换、279. 完全平方数

给你一个由整数组成的数组nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。题目数据保证答案符合 32 位整数范围。7所有可能的组合为:(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。0如果给定的数组中含有负数会发生什么?问题会产生何种变化?如果允许负数出现,需要向题目中添加哪些限制条件?

2024-06-18 18:54:52 726

原创 代码随想录算法训练营第四十二天| 494. 目标和、474. 一和零 、52. 携带研究材料(第七期模拟笔试)、518. 零钱兑换 II

给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个2'+'1'-'"+2-1"返回可以通过上述方法构造的、运算结果等于target的不同的数目。5一共有 5 种方法让最终目标和为 3。1。

2024-06-17 18:39:09 707

原创 代码随想录算法训练营第四十一天| 46. 携带研究材料(第六期模拟笔试)、46. 携带研究材料(第六期模拟笔试)空间优化法、416. 分割等和子集、1049. 最后一块石头的重量 II

没想到没想到没想到!!!

2024-06-16 12:17:41 788

原创 代码随想录算法训练营第三十九天| 62. 不同路径 、63. 不同路径 II 、343. 整数拆分 、96. 不同的二叉搜索树

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

2024-06-15 22:55:30 1402

原创 代码随想录算法训练营第三十八天| 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯

(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。

2024-06-14 22:57:58 632

原创 代码随想录算法训练营第三十七天| 56. 合并区间、738. 单调递增的数字、968. 监控二叉树

以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].[[1,5]]区间 [1,4] 和 [4,5] 可被视为重叠区间。

2024-06-13 14:34:29 735

原创 代码随想录算法训练营第三十六天| 452. 用最少数量的箭引爆气球 、435. 无重叠区间、763. 划分字母区间

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中表示水平直径在xstart和xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为startend, 且满足end,则该气球会被。可以射出的弓箭的数量。弓箭一旦被射出之后,可以无限地前进。给你一个数组points返回引爆所有气球所必须射出的弓箭数。

2024-06-13 00:25:42 866

原创 代码随想录算法训练营第三十五天| 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果、860. 柠檬水找零、406. 根据身高重建队列

给你一个整数数组nums和一个整数kinums[i]-nums[i]重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组。5选择下标 1 ,nums 变为 [4,-2,3]。6选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。13选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。

2024-06-12 00:00:56 926

原创 代码随想录算法训练营第三十二天| 122. 买卖股票的最佳时机 II 、55. 跳跃游戏 、45. 跳跃游戏 II

给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。

2024-06-09 16:55:02 790

原创 代码随想录算法训练营第三十一天| 455. 分发饼干、376. 摆动序列、53. 最大子数组和

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

2024-06-09 15:09:15 1016

原创 代码随想录算法训练营第三十天| 332. 重新安排行程、51. N 皇后、37. 解数独

题目:给你一份航线列表tickets,其中表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。toi。

2024-06-07 01:58:24 697

原创 代码随想录算法训练营第二十九天| 491. 非递减子序列、46. 全排列、47. 全排列 II

给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。[[4,4]]

2024-06-05 21:23:20 1073

原创 代码随想录算法训练营第二十八天| 93. 复原 IP 地址、78. 子集、90. 子集 II

根据子集的元素个数来划分, n 个字符串组成的子集长度是从 0 ~ n. 同时对于长度为 m 的子集, 是由长度为 m - 1 的子集再添加元素组成.与求子集问题一致, 但是需要去重. 去重的关键在于, 如果前一个元素与自己相同, 表示自己与后面元素的组合都已经处理过了, 因此需要忽略自己.因此可以通过递归的方式, 从只有一个元素的子集, 添加新的元素组成更大的子集, 一直到处理到最后一个元素为止.和切割回文子串的思路有点像, 但是回文字符串子集在原字符串中是连续的, 这里的子集是不需要连续的.

2024-06-04 20:55:06 772

空空如也

空空如也

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

TA关注的人

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