自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 541. 反转字符串 II

从字符串开头算起,每计数至。541. 反转字符串 II。

2025-03-26 16:20:09 291

原创 344.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。

2025-03-26 14:17:53 160

原创 142. 环形链表 II——考察数学,难!

142. 环形链表 II给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回索引为 0 的链表节点链表中有一个环,其尾部连接到第一个节点。

2025-03-25 23:10:18 850

原创 面试题 02.07. 链表相交

面试题 02.07. 链表相交给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交题目数据整个链式结构中不存在环。,函数返回结果后,链表必须。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

2025-03-25 21:54:44 742

原创 24. 两两交换链表中的节点——双指针,好题!

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。[1,2,3,5][][1]你能尝试使用一趟扫描实现吗?

2025-03-25 21:27:38 280

原创 24. 两两交换链表中的节点

24. 两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2025-03-25 21:17:38 826

原创 707.设计链表

你可以选择使用单链表或者双链表,设计并实现自己的链表。val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从开始。实现index-1valvalvalindexindexindexindex// 链表变为 1->2->3// 返回 2// 现在,链表变为 1->3// 返回 3getaddAtHeadaddAtTailaddAtIndex2000。

2025-03-25 15:06:39 277

原创 dijkstra(堆优化版)

然而,途中的各个车站之间的道路状况、交通拥堵程度以及可能的自然因素(如天气变化)等不同,这些因素都会影响每条路径的通行时间。与dijkstra的主要区别就是考虑了稀疏图,因此改用邻接表实现,所以增加了一个堆优化,用来对minDistance自动排序,选出最小的。接下来为 M 行,每行包括三个整数,S、E 和 V,代表了从 S 车站可以单向直达 E 车站,并且需要花费 V 单位的时间。如下图所示,起始车站为 1 号车站,终点车站为 7 号车站,绿色路线为最短的路线,路线总长度为 12,则输出 12。

2025-03-22 23:09:01 989

原创 并查集——108. 冗余连接

图中的 1 2,2 3,1 3 等三条边在删除后都能使原图变为一棵合法的树。数组:存储每个元素的父节点,初始时每个元素的父节点是它自己(表示每个元素是一个独立的集合)。动态维护一组元素的集合关系,支持快速查询两个元素是否属于同一集合,以及合并两个集合。后续 N 行,每行包含两个整数 s 和 t,表示图中 s 和 t 之间有一条边。输出一条可以删除的边。如果有多个答案,请删除标准输入中最后出现的那条边。方法:查找元素所在集合的根节点,并进行路径压缩优化。第一行包含一个整数 N,表示图的节点个数和边的个数。

2025-03-22 22:17:09 317

原创 105. 有向图的完全联通

给定一个有向图,包含 N 个节点,节点编号分别为 1,2,...,N。现从 1 号节点开始,如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。第一行包含两个正整数,表示节点数量 N 和边的数量 K。后续 K 行,每行两个正整数 s 和 t,表示从 s 节点有一条边单向连接到 t 节点。如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。从 1 号节点可以到达任意节点,输出 1。

2025-03-22 21:37:23 273

原创 SPFA算法(Bellman_ford 队列优化算法)

共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。示例中最佳路径是从 1 -> 2 -> 5 -> 6,路上的权值分别为 1 2 -2,最终的最低运输成本为 1 + 2 + (-2) = 1。接下来为 m 行,每行包括三个整数,s、t 和 v,表示 s 号城市运输货物到达 t 号城市,道路权值为 v (单向图)。与Bellman的主要区别就是加入了一个队列,只有上次更新过的下次才需要更新,优化了很多不必要的判断,实现用的是邻接表。

2025-03-22 18:41:16 895

原创 Floyd 算法——97. 小明逛公园

初始化输入节点数n和边数m。创建一个三维数组graph,其中表示从节点i到节点j,经过前k个中间节点的最短路径。初始时,表示直接从i到j的边的权重。如果i和j之间没有直接边,则权重为inf(无穷大)。动态规划转移对于每个中间节点k(从 1 到n),更新所有节点对(i, j)的最短路径:如果通过中间节点k可以使路径更短,即,则更新。否则,保持。查询输入查询次数q,对于每次查询,输出,即从start到end的最短路径。如果路径不存在(值为inf),输出-1。

2025-03-21 22:49:13 910

原创 LetPub中科院期刊分区爬取(计算机科学)

【代码】LetPub中科院期刊分区爬取(计算机科学)

2025-03-21 13:55:02 137

原创 bellman_ford之判断负权回路

路径中存在负权回路,从 1 -> 2 -> 3 -> 1,总权值为 -1,理论上货物运输商可以在该回路无限循环赚取政府补贴,所以输出 "circle" 表示已经检测出了该种情况。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。请找出从城市 1 到城市 n 的所有可能路径中,综合政府补贴后的最低运输成本。接下来为 m 行,每行包括三个整数,s、t 和 v,表示 s 号城市运输货物到达 t 号城市,道路权值为 v。

2025-03-20 14:27:32 289

原创 Bellman_ford 算法——解决负权边最短路径问题

读取节点数。

2025-03-20 11:58:26 759

原创 dijkstra算法——47. 参加科学大会

读取节点数。

2025-03-19 23:01:23 974

原创 拓扑排序——117. 软件构建

读取节点数。

2025-03-19 22:20:59 412

原创 图论——kruskal算法

读取节点数。

2025-03-19 16:54:06 858

原创 并查集——107. 寻找存在的路径

并查集

2025-03-19 16:34:35 919

原创 图论——Prim算法

不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。接下来共有 E 行,每行三个整数 v1,v2 和 val,v1 和 v2 为边的起点和终点,val代表边的权值。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。如下图,可见将所有的顶点都访问一遍,总距离最低是6.:记录每个节点到当前生成树的最小距离,初始值为。开始,将其标记为已加入生成树(

2025-03-19 15:37:24 655

原创 103. 水流问题

103. 水流问题。

2025-03-18 17:33:19 403

原创 102. 沉没孤岛

给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。现在你需要将所有孤岛“沉没”,即将孤岛中的所有陆地单元格(1)转变为水域单元格(0)。和之前的区别就是一开始只有在边界的元素才能进入递归遍历,这样就可以把孤岛都剩下。之后 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。如果边界上的某个位置值为1且未被访问过,则从该位置开始进行DFS遍历。在DFS过程中,将所有与边界相连的1标记为2,并标记这些位置为已访问。

2025-03-18 16:41:31 245

原创 【无标题】

101. 孤岛的总面积。

2025-03-17 22:25:51 685

原创 100. 岛屿的最大面积

给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。然后遍历当前节点的四个方向(上、下、左、右),检查相邻节点是否在矩阵范围内、是否为。通过递归,DFS 会遍历整个连通区域,并将所有访问过的节点标记为。输出一个整数,表示岛屿的最大面积。样例输入中,岛屿的最大面积为 4。进行搜索,并将连通区域的数量。,即矩阵中连通区域的数量。

2025-03-17 21:54:08 268

原创 图论——广度优先搜索实现

给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。注意: directions = [(0, 1), (1, 0), (-1, 0), (0, -1)]必须要有左和上两个方向,不然可能会多计数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0。输出一个整数,表示岛屿的数量。根据测试案例中所展示,岛屿数量共有 3 个,所以输出 3。第一行包含两个整数 N, M,表示矩阵的行数和列数。每次启动 BFS 时,表示发现一个新的连通区域,、未被访问过),标记为已访问并加入队列。

2025-03-17 17:12:52 501

原创 图论——DFS

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

2025-03-16 22:08:28 154

原创 贪心-455.分发饼干&2410. 运动员和训练师的最大匹配数

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。先分配小饼干,再分配大饼干。

2025-03-15 22:21:40 641

原创 93.复原IP地址

用以表示一个 IP 地址,返回所有可能的。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。

2025-03-15 17:10:25 311

原创 131.分割回文串

思路:for循环横向遍历,如果前i+1位是回文串,那么就把它切割放入path,当整个字符串都切割完之后,再收割结果。分割成一些 子串,使每个子串都是。所有可能的分割方案。

2025-03-15 16:22:04 203

原创 491.递增子序列

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

2025-03-15 00:01:00 136

原创 47.全排列 II

这里是因为横向遍历是顺序的,nums[i] == nums[i-1] and used[i - 1] == 0 说明前一个相同的节点i-1这个节点已经被使用过,这里就可以直接跳过i.在全排列中used[i-1]==0 是区分树层相同元素访问和枝叶相同元素访问的关键。如果是在递归中访问到相同元素,那么used[i-1]一定等于1.给定一个可包含重复数字的序列。返回所有不重复的全排列。

2025-03-14 20:33:06 170

原创 46.全排列

注意,下面的代码可以实现used数组和path数组是同时变化的,也就是used数组可以实时反映path数组的变化。每次for循环都是一次横向遍历,每次进入递归函数都是一次纵向遍历,相当于在纵向遍历中进行剪枝操作。排列问题,要引入一个used数组 ,来记录哪个元素已经使用。给定一个不含重复数字的数组。

2025-03-14 20:03:52 289

原创 90.子集II

其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。返回的解集中,子集可以按。

2025-03-14 19:02:20 292

原创 78.子集

返回该数组所有可能的子集(幂集)。

2025-03-14 17:12:25 266

原创 40.组合总和II

我没用代码随想录上的use数组,试了很多次,发现最大的问题是不能区分当前 循环是在纵向递归还是横向遍历?因为它们都写在了for循环里,傻傻分不清。都快要放弃了,最后猛然一拍脑袋想到,判断在纵向遍历还是横向遍历的精髓在于i是否等于index.如果i == index,说明此时在递归,如果i > index,说明此时在横向遍历。中的每个数字在每个组合中只能使用。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。

2025-03-14 16:53:44 306

原创 39.组合总和

2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。跟之前组合的区别就是物品遍历的时候可以从自己的本身开始,而不是从下一位开始。如果至少一个数字的被选数量不同,则两种组合是不同的。力扣题目链接(opens new window)7 也是一个候选, 7 = 7。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。

2025-03-14 12:24:40 376

原创 17.电话号码的字母组合

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。这道回溯真是太难写了。

2025-03-14 00:12:08 240

原创 654.最大二叉树

[3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 只有一个元素,所以子节点是一个值为 0 的节点。- 空数组,无子节点。- 空数组,无子节点。

2025-03-13 16:36:22 299

原创 112. 路径总和

对于不可变对象(如整数、字符串等),函数内部对参数的修改不会影响外部的值;而对于可变对象(如列表、字典等),函数内部对参数的修改会影响外部的值。那道题不同,那道题传入的是列表可变对象,而本题必须将sumPath(整数类型)定义为全局变量,才能在函数中实现绝对引用。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。在 Python 中,函数的参数传递是。是指没有子节点的节点。

2025-03-13 15:52:50 252

原创 513.找左下角的值

513. 找树左下角的值已解答中等相关标签相关企业给定一个二叉树的 根节点 ,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7提示:

2025-03-13 14:41:28 224

空空如也

空空如也

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

TA关注的人

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