- 博客(296)
- 问答 (1)
- 收藏
- 关注
原创 环形链表问题
本文参考给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true。否则,返回 false。
2025-12-15 19:34:01
239
原创 判断回文链表
本文参考请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true。
2025-12-10 15:18:02
160
原创 删除链表的倒数第N个节点
本文参考给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2:输入:head = [1], n = 1 输出:[]示例 3:输入:head = [1,2], n = 1 输出:[1]
2025-12-09 11:23:49
256
原创 两两交换链表中的节点
本文参考给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
2025-12-09 11:03:54
310
原创 搜索插入位置
本文参考给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0。
2025-12-08 19:13:13
246
原创 在排序数组中查找元素的第一个和最后一个位置
本文参考给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为Ologn的算法解决此问题吗?
2025-12-05 14:04:45
168
原创 寻找数组的中心下标
本文参考给你一个整数数组 nums ,请计算数组的 中心下标。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3。
2025-11-28 15:54:45
185
原创 旋转数组问题
本文参考给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释: 向右旋转 1 步: [7,1,2,3,4,5,6]。向右旋转 2 步: [6,7,1,2,3,4,5]。向右旋转 3 步: [5,6,7,1,2,3,4]。
2025-11-25 15:53:14
279
原创 移动零:动态规划
本文参考给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。
2025-11-21 14:34:33
250
原创 独一无二的出现次数
本文参考给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。
2025-11-20 19:45:44
294
原创 有效的山脉数组
本文参考给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:在 0 < i < arr.length - 1 条件下,存在 i 使得:示例 1:输入:arr = [2,1]输出:false示例 2:输入:arr = [3,5,5]输出:false示例 3:输入:arr = [0,3,2,1]输出:true。
2025-11-19 14:00:49
227
原创 有多少小于当前数字的数字
本文参考给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j!= i 且 nums[j] < nums[i]。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。
2025-11-19 13:16:42
168
原创 骑士的攻击(A*)
本文参考题目描述在象棋中,马和象的移动规则分别是“马走日”和“象走田”。现给定骑士的起始坐标和目标坐标,要求根据骑士的移动规则,计算从起点到达目标点所需的最短步数。骑士移动规则如图,红色是起始位置,黄色是骑士可以走的地方。棋盘大小 1000 x 1000(棋盘的 x 和 y 坐标均在 [1, 1000] 区间内,包含边界)输入描述第一行包含一个整数 n,表示测试用例的数量。
2025-11-13 17:42:43
345
原创 小明逛公园(Floyd)
本文参考【题目描述】小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短的路径。给定一个公园景点图,图中有 N 个景点(编号为 1 到 N),以及 M 条双向道路连接着这些景点。每条道路上行走的距离都是已知的。小明有 Q 个观景计划,每个计划都有一个起点 start 和一个终点 end,表示他想从景点 start 前往景点 end。由于小明希望节省体力,他想知道每个观景计划中从起点到终点的最短路径长度。
2025-11-12 13:15:52
688
原创 python刷题必备
在Python中,heapq模块实现的是一个小顶堆(最小堆),因此默认情况下它会根据元组的第一个元素进行排序。由于我们在优先队列中存储的是 (权值, 节点) 这样的元组,所以不需要自定义排序。heapq会自动根据权值(即元组的第一个元素)进行排序。deque(double-ended queue,双端队列)是 Python 中一个高效的数据结构,支持从两端快速添加和删除元素。
2025-11-05 13:50:23
154
原创 城市间货物运输 III(单源有限最短路)
本文参考【题目描述】某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。网络中的道路都有各自的运输成本和政府补贴,道路的权值计算方式为:运输成本 - 政府补贴。权值为正表示扣除了政府补贴后运输货物仍需支付的费用;权值为负则表示政府的补贴超过了支出的运输成本,实际表现为运输过程中还能赚取一定的收益。
2025-11-05 13:50:12
277
原创 城市间货物运输 II(负权回路)
本文参考【题目描述】某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。网络中的道路都有各自的运输成本和政府补贴,道路的权值计算方式为:运输成本 - 政府补贴。权值为正表示扣除了政府补贴后运输货物仍需支付的费用;权值为负则表示政府的补贴超过了支出的运输成本,实际表现为运输过程中还能赚取一定的收益。
2025-10-31 11:18:23
331
原创 城市间货物运输 I(队列优化)
本文参考题目描述某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。网络中的道路都有各自的运输成本和政府补贴,道路的权值计算方式为:运输成本 - 政府补贴。权值为正表示扣除了政府补贴后运输货物仍需支付的费用;权值为负则表示政府的补贴超过了支出的运输成本,实际表现为运输过程中还能赚取一定的收益。请找出从城市 1 到城市 n 的所有可能路径中,综合政府补贴后的最低运输成本。
2025-10-27 10:02:39
282
原创 城市间货物运输 I
本文参考题目描述某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。网络中的道路都有各自的运输成本和政府补贴,道路的权值计算方式为:运输成本 - 政府补贴。权值为正表示扣除了政府补贴后运输货物仍需支付的费用;权值为负则表示政府的补贴超过了支出的运输成本,实际表现为运输过程中还能赚取一定的收益。请找出从城市 1 到城市 n 的所有可能路径中,综合政府补贴后的最低运输成本。
2025-10-22 14:23:51
404
原创 参加科学大会(dijkstra(堆优化版))
本文参考【题目描述】小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以及可能的自然因素(如天气变化)等不同,这些因素都会影响每条路径的通行时间。小明希望能选择一条花费时间最少的路线,以确保他能够尽快到达目的地。【输入描述】第一行包含两个正整数,第一个正整数 N 表示一共有 N 个公共汽车站,第二个正整数 M 表示有 M 条公路。
2025-10-21 17:44:02
436
原创 参加科学大会
本文参考【题目描述】小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以及可能的自然因素(如天气变化)等不同,这些因素都会影响每条路径的通行时间。小明希望能选择一条花费时间最少的路线,以确保他能够尽快到达目的地。【输入描述】第一行包含两个正整数,第一个正整数 N 表示一共有 N 个公共汽车站,第二个正整数 M 表示有 M 条公路。
2025-10-20 16:46:17
390
原创 软件构建(拓扑排序)
本文参考题目描述:某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理文件 A 之前处理文件 B (0 <= A, B <= N - 1)。请编写一个算法,用于确定文件处理的顺序。输入描述:第一行输入两个正整数 N, M。表示 N 个文件之间拥有 M 条依赖关系。后续 M 行,每行两个正整数 S 和 T,表示 T 文件依赖于 S 文件。
2025-10-17 14:36:10
174
原创 【无标题】
本文参考在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。以最小化公路建设长度,确保可以链接到所有岛屿。输入描述第一行包含两个整数V 和 E,V代表顶点数,E代表边数。顶点编号是从1到V。例如:V=2,一个有两个顶点,分别是1和2。
2025-10-16 13:29:50
364
原创 prim算法
本文参考在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。以最小化公路建设长度,确保可以链接到所有岛屿。输入描述第一行包含两个整数V 和 E,V代表顶点数,E代表边数。顶点编号是从1到V。例如:V=2,一个有两个顶点,分别是1和2。
2025-10-15 13:59:50
297
原创 冗余连接II
本文参考有一种有向树,该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。有向树拥有 n 个节点和 n - 1 条边。如图:现在有一个有向图,有向图是在有向树中的两个没有直接链接的节点中间添加一条有向边。如图:输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。输入描述第一行输入一个整数 N,表示有向图中节点和边的个数。
2025-10-14 13:57:42
335
原创 【无标题】
有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图,例如如图:现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图:先请你找出冗余边,删除后,使该图可以重新变成一棵树。输入描述第一行包含一个整数 N,表示图的节点个数和边的个数。后续 N 行,每行包含两个整数 s 和 t,表示图中 s 和 t 之间有一条边。输出描述输出一条可以删除的边。如果有多个答案,请删除标准输入中最后出现的那条边。输入示例3。
2025-10-13 13:12:01
148
原创 寻找存在的路径
本文参考题目描述给定一个包含 n 个节点的无向图中,节点编号从 1 到 n (含 1 和 n )。你的任务是判断是否有一条从节点 source 出发到节点 destination 的路径存在。输入描述第一行包含两个正整数 N 和 M,N 代表节点的个数,M 代表边的个数。后续 M 行,每行两个正整数 s 和 t,代表从节点 s 与节点 t 之间有一条边。最后一行包含两个正整数,代表起始节点 source 和目标节点 destination。输出描述。
2025-10-10 13:24:25
226
原创 有向图的完全联通
本文参考【题目描述】给定一个有向图,包含 N 个节点,节点编号分别为 1,2,…,N。现从 1 号节点开始,如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。【输入描述】第一行包含两个正整数,表示节点数量 N 和边的数量 K。后续 K 行,每行两个正整数 s 和 t,表示从 s 节点有一条边单向连接到 t 节点。【输出描述】如果可以从 1 号节点的边可以到达任何节点,则输出 1,否则输出 -1。【输入示例】4 41 22 11 32 4【输出示例】
2025-10-09 13:20:00
169
原创 字符串接龙
本文参考题目描述字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序列:序列中第一个字符串是 beginStr。序列中最后一个字符串是 endStr。每次转换只能改变一个位置的字符(例如 ftr 可以转化 fty ,但 ftr 不能转化 frx)。转换过程中的中间字符串必须是字典 strList 中的字符串。beginStr 和 endStr 不在 字典 strList 中字符串中只有小写的26个字母。
2025-09-28 17:03:36
327
原创 岛屿的周长
本文参考题目描述给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿是被水包围,并且通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设矩阵外均被水包围。在矩阵中恰好拥有一个岛屿,假设组成岛屿的陆地边长都为 1,请计算岛屿的周长。岛屿内部没有水域。输入描述第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。输出描述输出一个整数,表示岛屿的周长。输入示例5 50 0 0 0 00 1 0 1 0。
2025-09-28 15:31:19
230
原创 建造最大岛屿
本文参考题目描述:给定一个由 1(陆地)和 0(水)组成的矩阵,你最多可以将矩阵中的一格水变为一块陆地,在执行了此操作之后,矩阵中最大的岛屿面积是多少。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿是被水包围,并且通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。输出描述:输出一个整数,表示最大的岛屿面积。输入示例:4 5。
2025-09-28 13:22:45
425
原创 孤岛水流问题
本文参考题目描述:现有一个 N × M 的矩阵,每个单元格包含一个数值,这个数值代表该位置的相对高度。矩阵的左边界和上边界被认为是第一组边界,而矩阵的右边界和下边界被视为第二组边界。矩阵模拟了一个地形,当雨水落在上面时,水会根据地形的倾斜向低处流动,但只能从较高或等高的地点流向较低或等高并且相邻(上下左右方向)的地点。我们的目标是确定那些单元格,从这些单元格出发的水可以达到第一组边界和第二组边界。输入描述:第一行包含两个整数 N 和 M,分别表示矩阵的行数和列数。
2025-09-26 13:28:28
429
原创 沉没孤岛问题
本文参考题目描述:给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。现在你需要将所有孤岛“沉没”,即将孤岛中的所有陆地单元格(1)转变为水域单元格(0)。输入描述:第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。输出描述输出将孤岛“沉没”之后的岛屿矩阵。输入示例:4 5。
2025-09-25 14:03:26
301
原创 孤岛的总面积
本文参考题目描述给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。输入描述第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0。输出描述输出一个整数,表示所有孤岛的总面积,如果不存在孤岛,则输出 0。输入示例4 5。
2025-09-24 19:29:33
336
原创 岛屿的最大面积
本文参考题目描述给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。输出描述输出一个整数,表示岛屿的最大面积。如果不存在岛屿,则输出 0。输入示例4 51 1 0 0 01 1 0 0 0。
2025-09-24 14:04:04
200
原创 岛屿数量(广搜)
本文参考题目描述:给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0。输出描述:输出一个整数,表示岛屿的数量。如果不存在岛屿,则输出 0。输入示例:4 51 1 0 0 01 1 0 0 00 0 1 0 00 0 0 1 1输出示例:3。
2025-09-23 13:54:42
230
原创 岛屿数量(深搜)
本文参考题目描述:给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0。输出描述:输出一个整数,表示岛屿的数量。如果不存在岛屿,则输出 0。输入示例:4 51 1 0 0 01 1 0 0 00 0 1 0 00 0 0 1 1输出示例:3。
2025-09-22 13:52:03
335
原创 所有可达路径
【题目描述】给定一个有 n 个节点的有向无环图,节点编号从 1 到 n。请编写一个程序,找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。【输入描述】第一行包含两个整数 N,M,表示图中拥有 N 个节点,M 条边后续 M 行,每行包含两个整数 s 和 t,表示图中的 s 节点与 t 节点中有一条路径【输出描述】输出所有的可达路径,路径中所有节点的后面跟一个空格,每条路径独占一行,存在多条路径,路径输出的顺序可任意。如果不存在任何一条路径,则输出 -1。注意输出的序列中,最后一
2025-09-22 13:21:19
249
空空如也
做冒泡排序,请问为什么它不进行重排?
2020-10-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅