自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(475)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode Python - 83. 删除排序链表中的重复元素

如果当前 cur 与 cur.next 对应的元素相同,我们就将 cur 的 next 指针指向 cur 的下下个节点。否则,说明链表中 cur 对应的元素是不重复的,因此可以将 cur 指针移动到下一个节点。给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次。返回 已排序的链表。时间复杂度 O(n),其中 n 是链表的长度。输入:head = [1,1,2,3,3]输入:head = [1,1,2]遍历结束后,返回链表的头节点即可。输出:[1,2,3]

2024-03-31 08:30:00 408

原创 LeetCode Python - 84. 柱状图中最大的矩形

我们可以枚举每根柱子的高度 h 作为矩形的高度,利用单调栈,向左右两边找第一个高度小于 h 的下标 left。给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。时间复杂度 O(n),空间复杂度 O(n)。其中 n 表示 heights 的长度。输入:heights = [2,1,5,6,2,3]求在该柱状图中,能够勾勒出来的矩形的最大面积。解释:最大的矩形为图中红色区域,面积为 10。输入: heights = [2,4]−1),求最大值即可。

2024-03-31 08:15:00 293

原创 LeetCode Python - 82. 删除排序链表中的重复元素 II

当 cur 指向的节点值与 cur.next 指向的节点值相同时,我们就让 cur 不断向后移动,直到 cur 指向的节点值与 cur.next 指向的节点值不相同时,停止移动。继续上述操作,直到 cur 为空,遍历结束。我们先创建一个虚拟头节点 dummy,令 dummy.next=head,然后创建指针 pre 指向 dummy,指针 cur 指向 head,开始遍历链表。输入:head = [1,2,3,3,4,4,5]输入:head = [1,1,1,2,3]输出:[1,2,5]

2024-03-30 12:40:29 503

原创 LeetCode Python - 81. 搜索旋转排序数组 II

在传递给函数之前,nums 在预先未知的某个下标 k(0

2024-03-30 12:33:43 296

原创 LeetCode Python - 80. 删除有序数组中的重复项 II

然后我们从左到右遍历数组,对于遍历到的每个元素 x,如果 k<2 或者 x≠nums[k−2],我们就将 x 放到 nums[k] 的位置,然后 k 自增 1。解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]

2024-03-30 12:22:20 1371

原创 LeetCode Python - 79. 单词搜索

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCB”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “SEE”

2024-03-30 12:16:56 971

原创 LeetCode Python - 77. 组合

我们也可以枚举下一个要选择的数字 j,其中 i≤j≤n,如果下一个要选择的数字是 j,那么我们将数字 j 加入搜索路径 t,然后继续搜索,即执行 dfs(j+1),接着将数字 j 从搜索路径 t 中移除。否则,我们可以选择将数字 i 加入搜索路径 t,然后继续搜索,即执行 dfs(i+1),然后将数字 i 从搜索路径 t 中移除;我们设计一个函数 dfs(i),表示从数字 i 开始搜索,当前搜索路径为 t,答案为 ans。在主函数中,我们从数字 1 开始搜索,即执行 dfs(1)。

2024-03-27 08:30:00 327

原创 LeetCode Python - 78. 子集

个二进制数来表示 n 个元素的所有子集,对于当前二进制数 mask,如果第 i 位为 1,表示选择了第 i 个元素,否则表示不选择第 i 个元素。我们设计一个函数 dfs(i),表示从数组的第 i 个元素开始搜索所有子集。在主函数中,我们调用 dfs(0),即从数组的第一个元素开始搜索所有子集。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]),空间复杂度 O(n)。个子集,每个子集需要 O(n) 的时间来构造。个子集,每个子集需要 O(n) 的时间来构造。

2024-03-27 08:30:00 385

原创 LeetCode Python - 75. 颜色分类

我们定义三个指针 i, j 和 k,其中指针 i 用于指向数组中元素值为 0 的最右边界,指针 j 用于指向数组中元素值为 2 的最左边界,初始时 i=−1, j=n。遍历结束后,数组中的元素就被分成了 [0,i], [i+1,j−1] 和 [j,n−1] 三个部分。若 nums[k]=0,则将其与 nums[i+1] 交换,然后 i 和 k 都加 1;输入:nums = [2,0,2,1,1,0]若 nums[k]=1,则 k 加 1。输入:nums = [2,0,1]输出:[0,0,1,1,2,2]

2024-03-26 08:30:00 319

原创 LeetCode Python - 76. 最小覆盖子串

我们将其加入窗口中,即 window[s[i]]=window[s[i]]+1,如果此时 need[s[i]]≥window[s[i]],则说明 s[i] 是一个「必要的字符」,我们将 cnt 加一。然后,我们尝试移动左边界 j,如果此时 need[s[j]]≥window[s[j]],则说明 s[j] 是一个「必要的字符」,移动左边界时会把 s[j] 这个字符从窗口中移除,因此我们需要将 cnt 减一,然后更新 window[s[j]]=window[s[j]]−1,并将 j 右移一位。

2024-03-26 08:30:00 970

原创 LeetCode Python - 74. 搜索二维矩阵

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13。输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3。给你一个整数 target ,如果 target 在矩阵中,返回 true;时间复杂度 O(log(m×n))。其中 m 和 n 分别是矩阵的行数和列数。空间复杂度 O(1)。时间复杂度 O(m+n)。其中 m 和 n 分别是矩阵的行数和列数。

2024-03-25 10:12:13 599

原创 LeetCode Python - 73. 矩阵置零

方法一中使用了额外的数组标记待清零的行和列,实际上我们也可以直接用矩阵的第一行和第一列来标记,不需要开辟额外的数组空间。给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]输出:[[1,0,1],[0,0,0],[1,0,1]]

2024-03-25 09:30:10 523

原创 LeetCode Python - 72. 编辑距离

我们定义 f[i][j] 表示将 word1 的前 i 个字符转换成 word2 的前 j 个字符所使用的最少操作数。初始时 f[i][0]=i, f[0][j]=j。其中 i∈[1,m],j∈[0,n]。给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。enention -> exention (将 ‘n’ 替换为 ‘x’)exention -> exection (将 ‘n’ 替换为 ‘c’)rose -> ros (删除 ‘e’)

2024-03-24 16:03:11 1086

原创 LeetCode Python - 71. 简化路径

任意多个连续的斜杠(即,‘//’)都被视为单个斜杠 ‘/’。给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。最后,我们将栈中的所有元素按照从栈底到栈顶的顺序拼接成字符串,即为简化后的规范路径。解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。输入:path = “/a/./b/…输入:path = “/home//foo/”输入:path = “/home/”输出:“/home/foo”

2024-03-24 14:35:48 383

原创 LeetCode Python - 69. x 的平方根

在每一步查找中,我们找出中间值 mid=(l+r+1)/2,如果 mid>x/mid,说明平方根在 [l,mid−1] 范围内,我们令 r=mid−1;否则说明平方根在 [mid,r] 范围内,我们令 l=mid。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。我们定义二分查找的左边界 l=0,右边界 r=x,然后在 [l,r] 范围内查找平方根。, 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。

2024-03-23 08:30:00 310

原创 LeetCode Python - 70. 爬楼梯

我们定义 f[i] 表示爬到第 i 阶楼梯的方法数,那么 f[i] 可以由 f[i−1] 和 f[i−2] 转移而来,即:f[i]=f[i−1]+f[i−2]由于 f[i] 只与 f[i−1] 和 f[i−2] 有关,因此我们可以只用两个变量 a 和 b 来维护当前的方法数,空间复杂度降低为 O(1)。初始条件为 f[0]=1,f[1]=1,即爬到第 0 阶楼梯的方法数为 1,爬到第 1 阶楼梯的方法数也为 1。我们定义初始矩阵 res=[ 1 1 ],那么 F。答案即为 f[n]。

2024-03-23 08:30:00 698

原创 LeetCode Python - 67. 二进制求和

我们用一个变量 carry 记录当前的进位,用两个指针 i 和 j 分别指向 a 和 b 的末尾,从末尾到开头逐位相加即可。时间复杂度 O(max(m,n)),其中 m 和 n 分别为字符串 a 和 b 的长度。空间复杂度 O(1)给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。输入:a = “1010”, b = “1011”输入:a = “11”, b = “1”输出:“10101”

2024-03-22 08:30:00 440

原创 LeetCode Python - 68. 文本左右对齐

输入:words = [“Science”,“is”,“what”,“we”,“understand”,“well”,“enough”,“to”,“explain”,“to”,“a”,“computer.”,“Art”,“is”,“everything”,“else”,“we”,“do”],maxWidth = 20。输入: words = [“This”, “is”, “an”, “example”, “of”, “text”, “justification.”], maxWidth = 16。

2024-03-22 08:30:00 758

原创 LeetCode Python - 65. 有效数字

部分有效数字列举如下:[“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”]部分无效数字列举如下:[“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”]如果当前指针 i 指向的字符是小数点,并且小数点后面没有数字,或者小数点后是一个 e 或 E,返回 false。输入:s = “e”

2024-03-21 08:30:00 733

原创 LeetCode Python - 66. 加一

我们从数组的最后一个元素开始遍历,将当前元素加一,然后对 10 取模,如果取模后的结果不为 0,说明当前元素没有进位,直接返回数组即可。否则,当前元素为 0,需要进位,继续遍历前一个元素,重复上述操作。如果遍历完数组后,仍然没有返回,说明数组中所有元素都为 0,需要在数组的头部插入一个 1。给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。输入:digits = [4,3,2,1]输入:digits = [1,2,3]输出:[4,3,2,2]输出:[1,2,4]

2024-03-21 08:30:00 558

原创 LeetCode Python - 63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]现在考虑网格中有障碍物。我们定义 dp[i][j] 表示到达网格 (i,j) 的路径数。输入:obstacleGrid = [[0,1],[0,0]]网格中的障碍物和空位置分别用 1 和 0 来表示。最后返回 dp[m−1][n−1] 即可。向右 -> 向右 -> 向下 -> 向下。向下 -> 向下 -> 向右 -> 向右。

2024-03-20 08:30:00 567

原创 LeetCode Python - 64. 最小路径和

我们定义 f[i][j] 表示从左上角走到 (i,j) 位置的最小路径和。初始时 f[0][0]=grid[0][0],答案为 f[m−1][n−1]。给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输入:grid = [[1,2,3],[4,5,6]]解释:因为路径 1→3→1→1→1 的总和最小。最后返回 f[m−1][n−1] 即可。

2024-03-20 08:30:00 948

原创 LeetCode Python - 61. 旋转链表

否则,我们用快慢指针,让快指针先走 k 步,然后快慢指针同时走,直到快指针走到链表尾部,此时慢指针的下一个节点就是新的链表头节点。给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。否则,我们先统计链表节点数 n,然后将 k 对 n 取模,得到 k 的有效值。我们先判断链表节点数是否小于 2,如果是,直接返回 head 即可。输入:head = [1,2,3,4,5], k = 2。输入:head = [0,1,2], k = 4。输出:[4,5,1,2,3]

2024-03-19 08:30:00 381

原创 LeetCode Python - 62. 不同路径

我们注意到 f[i][j] 仅与 f[i−1][j] 和 f[i][j−1] 有关,因此我们优化掉第一维空间,仅保留第二维空间,得到时间复杂度。我们定义 f[i][j] 表示从左上角走到 (i,j) 的路径数量,初始时 f[0][0]=1,答案为 f[m−1][n−1]。时间复杂度 O(m×n),空间复杂度 O(m×n)。O(m×n),空间复杂度 O(n) 的实现。最终的答案即为 f[m−1][n−1]。输入:m = 3, n = 7。输入:m = 3, n = 2。输入:m = 3, n = 3。

2024-03-19 08:30:00 393

原创 LeetCode Python - 59. 螺旋矩阵 II

从 1 开始,依次填入矩阵中的每个位置。每次填入一个位置后,计算下一个位置的行号和列号,如果下一个位置不在矩阵中或者已经被填过,则改变方向,再计算下一个位置的行号和列号。用 i 和 j 分别表示当前位置的行号和列号,用 k 表示当前的方向编号,dirs 表示方向编号与方向的对应关系。给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。),其中 n 是矩阵的边长。输出:[[1,2,3],[8,9,4],[7,6,5]]

2024-03-18 08:30:00 742

原创 LeetCode Python - 60. 排列序列

因此,我们枚举每一位 i,如果此时 k 大于当前位置确定后的排列数量,那么我们可以直接减去这个数量;对于每一位 i,其中 0≤i<n,剩余位能组成的排列数量为 (n−i−1)!,我们记为 fact。我们知道,集合 [1,2,…种排列,如果我们确定首位,那剩余位能组成的排列数量为 (n−1)!给出集合 [1,2,3,…,n],其所有元素共有 n!给定 n 和 k,返回第 k 个排列。输入:n = 3, k = 3。输入:n = 4, k = 9。输入:n = 3, k = 1。),空间复杂度 O(n)。

2024-03-18 08:30:00 440

原创 LeetCode Python - 57. 插入区间

输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输入:intervals = [[1,5]], newInterval = [2,7]解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。输出:[[1,2],[3,10],[12,16]]输出:[[1,5],[6,9]]输出:[[1,5]]

2024-03-17 08:30:00 934

原创 LeetCode Python - 58. 最后一个单词的长度

我们从字符串 s 末尾开始遍历,找到第一个不为空格的字符,即为最后一个单词的最后一个字符,下标记为 i。然后继续向前遍历,找到第一个为空格的字符,即为最后一个单词的第一个字符的前一个字符,记为 j。那么最后一个单词的长度即为 i−j。给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。时间复杂度 O(n),其中 n 为字符串 s 长度。解释:最后一个单词是长度为6的“joyboy”。解释:最后一个单词是“World”,长度为5。解释:最后一个单词是“moon”,长度为4。逆向遍历 + 双指针。

2024-03-17 08:30:00 422

原创 LeetCode Python - 55.跳跃游戏

我们从左到右遍历数组,对于遍历到的每个位置 i,如果 mx<i,说明当前位置无法到达,直接返回 false。否则,我们可以通过跳跃从位置 i 到达的最远位置为 i+nums[i],我们用 i+nums[i] 更新 mx 的值,即 x=max(mx,i+nums[i])。解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]

2024-03-16 08:30:00 394

原创 LeetCode Python - 56.合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]其中 n 为区间个数。解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]

2024-03-16 08:30:00 389

原创 LeetCode Python - 53.最大子树和

由于 f[i] 只与 f[i−1] 有关系,因此我们可以只用一个变量 f 来维护对于当前 f[i] 的值是多少,然后进行状态转移即可。我们定义 f[i] 表示以元素 nums[i] 为结尾的连续子数组的最大和,初始时 f[0]=nums[0],那么最终我们要求的答案即为 max。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]输入:nums = [1]是数组中的一个连续部分。

2024-03-15 08:30:00 412

原创 LeetCode Python - 54. 螺旋矩阵

每次我们访问到一个元素后,将其标记为已访问,然后按照当前的方向前进一步,如果前进一步后发现越界或者已经访问过,则改变方向继续前进,直到遍历完整个矩阵。时间复杂度 O(m×n),空间复杂度 O(m×n)。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5]

2024-03-15 08:30:00 404

原创 LeetCode Python - 51. N 皇后

否则,我们枚举当前行的每一列 j,如果位置 (i,j) 没有皇后,即 col[j], dg[i+j] 和 udg[n−i+j] 都为 0,那么我们可以放置皇后,即把 g[i][j] 改为 ‘Q’,并将 col[j], dg[i+j] 和 udg[n−i+j] 都置为 1,然后继续搜索下一行,即调用 dfs(i+1),递归结束后,我们需要将 g[i][j] 改回 ‘.’ 并将 col[j], dg[i+j] 和 udg[n−i+j] 都置为 0。),空间复杂度 O(n)。输出:[[“Q”]]

2024-03-14 08:30:00 651

原创 LeetCode Python - 52. N 皇后 II

具体地,我们用 cols 数组记录每一列是否已经放置了皇后,用 dg 数组记录每一条正对角线是否已经放置了皇后,用 udg 数组记录每一条反对角线是否已经放置了皇后。在第 i 行,我们枚举第 i 行的每一列,如果当前列不与前面已经放置的皇后发生冲突,那么我们就可以放置一个皇后,然后继续搜索下一行,即调用 dfs(i+1)。n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。时间复杂度 O(n!给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

2024-03-14 08:30:00 601

原创 LeetCode Python - 49.字母异位词分组

我们也可以将方法一中的排序部分改为计数,也就是说,将每个字符串 s 中的字符以及出现的次数作为 key,将字符串 s 作为 value 存入哈希表当中。其中 n 和 k 分别是字符串数组的长度和字符串的最大长度,而 C 是字符集的大小,本题中 C=26。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]输出: [[“a”]]输出: [[“”]]

2024-03-13 08:30:00 332

原创 LeetCode Python - 50. Pow(x, n)

快速幂算法的核心思想是将幂指数 n 拆分为若干个二进制位上的 1 的和,然后将 x 的 n 次幂转化为 x 的若干个幂的乘积。实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。其中 n 为幂指数。解释:2-2 = 1/22 = 1/4 = 0.25。输入:x = 2.00000, n = 10。输入:x = 2.00000, n = -2。输入:x = 2.10000, n = 3。输出:1024.00000。输出:9.26100。输出:0.25000。

2024-03-13 08:30:00 371

原创 LeetCode Python - 47.全排列②

次枚举,每次枚举需要 O(n) 的时间来判断是否重复。另外,我们需要一个标记数组来标记每个位置是否被使用过,因此空间复杂度为 O(n)。在主函数中,我们首先对数组进行排序,然后调用 dfs(0),即从第 0 个位置开始填写,最终返回答案数组即可。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]然后,我们设计一个函数 dfs(i),表示当前需要填写第 i 个位置的数。我们可以先对数组进行排序,这样就可以将重复的数字放在一起,方便我们进行去重。

2024-03-12 08:30:00 378

原创 LeetCode Python - 48.旋转图像

我们可以先对矩阵进行上下翻转,即 matrix[i][j] 和 matrix[n−i−1][j] 进行交换,然后再对矩阵进行主对角线翻转,即。输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]

2024-03-12 08:30:00 380

原创 LeetCode Python - 45.跳跃游戏②

n−2] 的每一个位置 i,对于每一个位置 i,我们可以通过 i+nums[i] 计算出当前位置能够到达的最远位置,我们用 mx 来记录这个最远位置,即 mx=max(mx,i+nums[i])。接下来,判断当前位置是否到达了上一次跳跃的边界,即 i=last,如果到达了,那么我们就需要进行一次跳跃,将 last 更新为 mx,并且将跳跃次数 ans 增加 1。我们可以用变量 mx 记录当前位置能够到达的最远位置,用变量 last 记录上一次跳跃到的位置,用变量 ans 记录跳跃的次数。

2024-03-11 08:45:00 372

原创 LeetCode Python - 46.全排列

我们设计一个函数 dfs(i) 表示已经填完了前 i 个位置,现在需要填第 i+1 个位置。枚举所有可能的数,如果这个数没有被填过,就填入这个数,然后继续填下一个位置,直到填完所有的位置。时间复杂度 O(n×n!),其中 n 是数组的长度。个排列,每个排列需要 O(n) 的时间来构造。

2024-03-11 08:30:00 725

java密码生成器工具

随着黑客攻击的增长趋势,每个人都应该为其不同的帐户创建不同且复杂的密码,以确保其安全。记住每个密码在人类看来是不可能的,并且在某处记下它不是一个明智的主意。因此,人们借助密码生成器为其帐户创建强大而复杂的密码。要自己生成此类功能,您可以利用 java 提供的功能。每当用户在新网站上开发帐户时,您都可以使用该程序开发密码。为了使密码的安全性更高,您可以强制执行此类功能,以便以加密形式保存密码。要整合这一点,您需要学习密码学和Java密码学体系结构的基础知识。 此项目是一个 Java 控制台应用程序,用于生成随机密码并执行密码强度检查。

2023-10-18

面试题-c++面试题五.doc

c++常用的面试题,希望对参加面试的人有帮助。

2023-08-30

面试题-c++面试题四

c++常用的面试题,希望对参加面试的人有帮助。

2023-08-30

面试题-c++面试题三

c++常用的面试题,希望对参加面试的人有帮助。

2023-08-30

面试题-c++面试题二

c++常用的面试题,希望对参加面试的人有帮助。

2023-08-30

面试题-c++面试题一

一些常见的c++面试题方便大家取用

2023-08-30

面试-Vue面试题总结

vue面试总结

2023-08-29

程序员找工作-简历模板

分享一个找工作的简历模板,欢迎大家取用

2023-08-29

mysql面试题(6)

一些mysql面试题总结

2023-08-28

mysql面试题(5)

mysql面试题分享

2023-08-28

mysql面试题(4)

为需要面试的人,总结了一些有关数据库的问题

2023-08-28

mysql面试题(3).docx

总结一些mysql需要的面试题,分享给大家

2023-08-28

mysql面试题(2)

一些面试的mysql题

2023-08-27

训练数据集-消费类数据集

消费类数据集是指记录了消费者购买行为和消费习惯的数据集。这些数据集通常包含了消费者在购物、零售、电子商务等领域的相关数据,如购买记录、交易金额、产品评价、用户信息等。消费类数据集对于市场研究、个性化推荐、消费行为分析等领域具有重要的应用价值。

2023-08-27

mysql面试题(1)

当提到MySQL面试题时,这里有五个常见的问题及其答案供您参考

2023-08-26

训练数据集-商业类数据集

商业类数据集是指用于商业和市场分析的数据集。这些数据集通常包含各种与商业相关的信息,如销售数据、财务数据、市场调研数据、客户数据等。它们可以帮助企业了解市场趋势、消费者行为、业绩表现等关键指标,从而做出更明智的商业决策。

2023-08-26

大语言模型面试题,校招面试必备,给自己面试增加成功的概率

大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率 大语言模型面试题,校招面试必备,给自己面试增加成功的概率

2023-08-23

java8 stream使用总结

Java 8引入了Stream API,它是一种强大的工具,用于以声明式和函数式风格处理数据集合。Stream API允许您以元素序列的方式执行操作,如过滤、映射、归约等

2023-08-16

一个基于 Python 的 LLM (大语言模型) 快速推理和服务框架,GPU利用率大幅提升

一个基于 Python 的 LLM (大语言模型) 推理和服务框架,以其轻量级设计、易于扩展和高速性能而著称。 利用了众多备受推崇的开源实现的优势,包括但不限于 FasterTransformer、TGI、 VLLM 和FlashAttention - 三进程异步协作:分词、模型推理、去分词异步进行,GPU利用率大幅提升。 - Nopad (Unpad):提供跨多个模型的nopad注意力操作支持,以有效处理长度差异较大的请求 - Dynamic Batch: 启用请求的动态批处理调度- FlashAttention: 结合 FashAttention 来提高推理过程中的速度并减少 GPU内存占用。 张量并行:利用多个 GPU 上的张量并行来实现更快的推理- Token Attention: 实现token-wise的KV缓存内存管理机制,实现推理时内存零浪费 -高性能Router: 与Token Attention配合,精心管理每个Token的GPU内存从而优化系统吞吐量。

2023-08-05

百川大语言模型fastapi接口服务

"百川大语言fastapi接口服务"是指使用FastAPI框架来创建一个接口服务,该服务可以调用大语言模型进行各种自然语言处理任务。FastAPI是一个现代、快速(高性能)的Web框架,用于构建API。 下面是大语言模型FastAPI接口服务的一些意义和作用: 便捷的接口调用:FastAPI框架可以帮助开发者快速地构建出RESTful风格的API接口,这样,其他的应用或服务就可以通过HTTP请求来调用大语言模型,进行文本生成、情感分析、文本摘要等任务。 异步支持:FastAPI支持异步处理请求,这意味着它可以同时处理多个请求,这对于调用计算密集型的大语言模型来说是非常重要的。 性能优秀:FastAPI使用Starlette用于web部分和Pydantic用于数据部分,使其具有出色的性能。这对于需要快速响应的语言模型服务来说非常重要。 自动生成文档:FastAPI可以自动生成API文档,这对于开发和使用API非常方便。 易于维护和扩展:

2023-08-01

文本到摩尔斯电码和二进制

该程序使用 Eclipse 将文本转换为莫尔斯电码和二进制。 该程序将随着我推进 Java 进修课程而更新。 运行程序,输入单词或短语,你会看到相当于莫尔斯电码和二进制的单词。

2023-10-30

Java 开发的薪资系统项目

薪资系统 带有源代码的工资系统项目是一个 Java 项目,可以帮助您计算每日或每周的费用。该系统的目的是自动计算每项费用。这个简单的项目是使用 Java 语言构建的。 该程序是一个简单的 GUI 应用程序,可以帮助您预算日常开支。系统不需要登录信息即可访问其功能。系统使用MySQL作为数据库提供程序,以便您存储所有重要数据。在总字段中输入一些数据时,它将自动计算所有其他费用和可能的应付账款。该系统变得简单,以便您从中学习并帮助您掌握 Java 开发技能。

2023-10-30

使用 Java 免费源代码的工厂项目生产控制应用程序

登录: 1 名员工登录:- 员工可以每小时更新一次生产细节 在工厂收到到货材料 显示生产上传状态列表 2. 客户登录:- 客户可以接收货物并更新到工厂

2023-10-30

使用 Java 免费源代码的服务提供商应用程序

这是用于预订服务和管理员分配给技术人员的服务提供商应用程序 技术人员可以登录并查看与工作相关的所有活动,例如接受预订和访问客户位置以及检查故障分析等。

2023-10-30

Java 中的简单巴士票务系统源代码

Java 中的简单巴士票务系统是用 Java 编程语言编码的桌面应用程序。该项目使用一个简单的功能使该票务系统按预期工作。该项目允许用户存储一个用于预订乘客座位的车票。目标已在系统脚本中输入,因此您无需再输入它。这个简单的巴士票务系统是一个简单的项目,可以使参加任何计算机相关课程的学生受益。该系统提供了预订乘客座位和跟踪可用巴士的便捷方式。这个 Java 中的简单巴士票务系统提供了 Java 编程中的简单编码技术。

2023-10-30

Java 中的简单文本编辑器源代码

Java 中的简单文本编辑器是用 Java 编程语言编码的桌面应用程序。该项目使用一个简单的函数来制作文本编辑器应用程序。这个项目可以允许写任何字母,也可以改变文本的字体样式。该应用程序易于使用,您只需打开应用程序即可开始编写任何您想要的内容。这个简单的文本编辑器是一个简单的项目,可以使刚开始学习编程的学生受益。该系统为您提供了一种编辑文本的便捷方式。这个 Java 中的简单文本编辑器提供了一种新的 Java 编程编码风格。

2023-10-30

Java 中的简单订购系统源代码

Java 中的简单排序系统是用 Java 编程语言编码的桌面应用程序。该项目使用一个简单的函数来使订购系统按预期工作。此项目可以为客户选择食品进行订单。用户可以通过添加新食品、更新和删除来管理食品列表。这个简单的订购系统是一个简单的项目,可以帮助学生参加IT相关课程的项目提案。如果您的食品企业需要高效交易,该项目可以使您受益。这个 Java 中的简单排序系统在 Java 编程中提供了新的编码技术。

2023-10-30

Java 免费源代码中的简单涂鸦跳转

Java 中的简单涂鸦跳转是一个用 Java 编程语言编码的桌面应用程序。该项目包含多个编码脚本来显示游戏的游戏玩法。游戏包含背景图像和图像精灵。Java 中的这个简单的涂鸦跳跃是一个在空闲时间与您的朋友、家人等一起提供娱乐的项目。当您想开发自己的视频游戏时,此项目很有用。Java 中的这个简单的涂鸦跳跃可以帮助您学习 Java 编程中的简单编码技术。

2023-10-28

Java 中的简单用户联系人管理应用程序

Java 中的简单用户联系人管理应用程序是用 Java 编程语言编码的桌面应用程序。该项目使用一个简单的功能来使此联系人管理按预期工作。该项目允许用户存储一个人的个人联系人。这个简单的用户联系人管理应用程序是一个简单的项目,可以使想要从事简单项目的学生受益。该项目只有可以轻松修改的基本脚本。这个简单的 Java 用户联系人管理应用程序在 Java 编程中提供了简单的编码技术。

2023-10-28

互联网服务提供商自动化系统

这个ISP(互联网服务提供商)项目需要您构建一个系统,向消费者提供自动故障排除和错误消息。该项目还需要您链接服务器和ISP之间的通信系统。它包括四个自动化模块,如用户登录模块、硬件和软件模块、服务模块和连接模块。您必须使用 Java 技术和 J2EE 来创建此系统。

2023-10-26

bFit认知和记忆测试游戏

如果你想成为一名Android开发人员,将Java Android开发应用程序项目纳入你的简历是非常有利的。这个项目是一个在线大脑锻炼游戏,可以尝试你的记忆力和认知能力。若要创建此应用程序,你将设置用户界面、实现游戏逻辑、制作初始屏幕、构建游戏指南并排列游戏屏幕。您还必须为应用程序的发布开发APK。最后一步包括应用程序中的自动数据处理记分牌,用于跟踪玩家的答案。

2023-10-19

建立消费者关系管理系统

断发展的Java项目需要精通Java数据库连接,MySQL,HTTP和JSpring框架。你应该学习Spring核心/ MVC,ORM框架和Hibernate来完成这个项目。您将为网络平台开发一个管理系统,让社区管理人员修改和访问消费者数据,以获得更令人满意的消费者关系。该项目利用Spring框架,并为Java编程提供源代码集。

2023-10-18

Java 中的字数统计工具

这是一个Java项目,对工程专业的学生提高他们在Java的文件和字符串处理概念方面的学习非常有帮助。程序员开发一个界面,客户可以在该界面上记录他们的内容,然后获得内容中的总字数。程序员策略并将内容保存在文件中以便处理,然后通过 String 类处理内容以计算单词。程序员可以创建不同的选择,以使项目更具创造性和吸引力。您还可以使用格式化的 Java API 来格式化客户端交付的内容。

2023-10-18

java爪哇考试座位安排系统

这个简单的Java项目致力于根据不同的输入构建学生考试的自动座位安排。 主要有两个实体,管理员和学生。两个实体都可以登录并注册到系统,并根据授予它们的批准检查和访问系统。管理员可以查看学生的所有相关详细信息,并根据学生的分支、学期、年份和主题等需求向系统提供输入。管理员将输入详细信息,例如学生总数,可用班级和座位数等。收集所有这些信息后,系统将根据行号和学生的名册编号生成座位安排。

2023-10-18

java供应链管理系统

通过使用此应用程序,客户可以直接将其物品先决条件传递给制造商,制造商此时可以到达各个商家以获取制作物品的基本资产。根据提供给他们的物品,供应商通常会对事物进行简要说明,然后制造商选择最能满足客户提供的细节的材料。选定的物料清单被发送到库存部门进行处理,然后开始组装。创建完成后,记录办公室确定原材料的费用和收集费用以生成完整的账单。最后,将带有收据的物品发送给客户。

2023-10-18

java网络医疗管理系统

通过使用此应用程序,患者可以预订与他们首选专家的在线会议。专家可以推荐医疗服务、电子疗法,并考虑患者的临床记录、实验室报告等等。该应用程序还允许用户探索和与捐献器官或血液的个人进行交互。在大流行期间,当去医院变得危险时,这个 JAVA 项目会来拯救您。该应用程序带有两个模块 - 管理员和医生模块。管理模块负责在线编程框架,医生模块允许专家与患者沟通。

2023-10-18

java代码-电费计费系统

对经典电费计费系统的现代演绎,一个人从我们的电表中收集数据。该项目的主要目标是自动化整个过程,使其无缝、方便和有效。该软件可以根据一个月内消耗的电量单位计算账单金额。电费计费系统被认为是初学者最好的Java项目创意之一。该应用程序应具有以下功能: 准确计算账单金额。 在当地电力局和用户之间即时共享数据。 非常安全,可以消除篡改的机会。

2023-10-18

java数据可视化软件

数据可视化是由数据科学、商业分析和商业智能领导的最先进业务的关键部分。它表示以图形排列方式对数据的视觉描述。对于学徒来说,这是一个强大的Java项目。该信息表示项目与提供信息感知中的计划和使用指南的概要相关联。这项任务的目的是通过适当的图形或图形描述,清晰而引人注目地对应信息中所包含的体验。 它将系统管理中的中心可用性描述为信息可视化。您可以使用鼠标或触控板在不同区域找到它。该任务最有用的部分是,您可以增强和修改先决条件所演示的产品亮点和容量。

2023-10-18

java在线简历生成器

人们发现建立简历具有挑战性。这个 java 项目的概念是让这个过程对客户来说很顺利。该项目简化了为个人设计简历的工作。 我们可以选择一些行业认可的、精心制作的简历模板,并要求用户将他/她想要添加到简历中的详细信息合并。输入所有必要的信息后,可以通过选择单个按钮以pdf和doc格式呈现个性化简历。应用应具有以下功能: 引人入胜的简历模板。 根据用户的需求更新每条信息。 它应该具有立即发布简历的功能。

2023-10-18

java在线调查系统项目

该项目的想法是创建一个核心Java项目,该项目可以通过Internet积累调查目标受众的观点。基于此,该应用程序可以向目标受众发送促销电子邮件,并可以启动在线调查。任何企业都可以使用这种类型的软件来收集有关他们提供的服务或产品的反馈。我们可以构建这样的功能,以便只有注册客户才能投递他们的响应。应用的主要属性应该是: 这些应用程序的编程方式应该与SQL和NoSQL等各种数据库兼容。 客户可以匿名提交他们的反应。 应以可行的成本安装。

2023-10-18

空空如也

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

TA关注的人

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