- 博客(43)
- 收藏
- 关注
原创 实验二:Git用法练习:使用 DevStar 搭建 Git 仓库托管平台
Git 是目前最流行的分布式版本控制系统,它由 Linus Torvalds(Linux 之父)于 2005 年开发。Git 允许多个开发者协作开发项目,跟踪代码变更,管理不同版本的代码。
2025-03-07 20:30:18
1098
原创 刷题14 动态规划
数组的每个下标作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](下标从0开始)。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。15最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15。某公司每日销售额记于整数数组sales,请返回所有一或多天销售额总和的最大值。要求实现时间复杂度为O(n)的算法。6。
2024-02-25 16:40:16
341
原创 刷题15 滑动窗口
给你一个整数数组nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。88 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。滑动窗口给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是 "abc",所以其长度为 3。滑动窗口+哈希表。
2024-02-25 16:39:44
1048
原创 刷题13 数组
整数的num是按照从左到右的顺序表示其数字的数组。例如,对于num = 1321,数组形式是[1,3,2,1]。给定num,整数的,和整数k,返回整数num + k的。[1,2,3,4]
2024-02-09 11:06:05
1096
原创 刷题11 双指针
给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组 [4,3]1。
2024-02-03 16:02:09
959
原创 代码随想录-动态规划专题
有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。,求解将哪些物品装入背包里物品价值总和最大。
2024-02-02 21:15:26
424
原创 刷题05数组mid
例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。动态规划: dp[i][j] 表示从数组的 [0,i] 下标范围内选取若干个正整数(可以是 0个),是否存在一种选取方案使得被选取的正整数的和等于 j。另一种优化写法:用滚动数组进行表示,dp[i]表示子序列能够到达的大于等于target的和,当dp[target]==target时,说明存在子序列之和正好为taget。如果选取 nums[i],则 dp[i][j]=dp[i−1][j−nums[i]]
2024-02-01 20:33:17
852
原创 刷题10
给你一个长度为n的字符串moves,该字符串仅由字符'L''R'和'_'组成。字符串表示你在一条原点为0的数轴上的若干次移动。移动n次之后,请你找出可以到达的距离原点的点,并返回。3可以到达的距离原点 0 最远的点是 -3 ,移动的序列为 "LLRLLLR"。给你长度相等的两个字符串s1和s2。一次操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。如果对执行就可以使两个字符串相等,返回true;否则,返回false。true。
2024-01-29 12:54:44
892
原创 刷题09 双指针
给你两个整数数组nums1和nums2,它们已经按非降序排序,请你返回两个数组的。如果两个数组nums1和nums2没有公共整数,请你返回-1。如果一个整数在两个数组中都,那么这个整数是数组nums1和nums2的。2两个数组的最小公共元素是 2 ,所以我们返回 2。暴力循环会超时,用两个指针进行寻找下标。给你一个下标从开始的整数数组nums。现定义两个数字的是由这两个数值串联起来形成的新数字。例如,15和49的串联是1549。nums的最初等于0。执行下述操作直到nums变为空:如果nums。
2024-01-28 11:15:57
1344
原创 刷题08 位运算easy
给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。"100""10101"给你一个整数n,请你判断该整数是否是 2 的幂次方。如果是,返回true;否则,返回false。如果存在一个整数x使得n == 2x,则认为n是 2 的幂次方。n = 16true24 = 16注意负数的情况,如果幂是偶数次方就返回false。注意循环的终止条件是n>1,若是n>0的话,最后都会返回false给定一个包含[0, n]中n个数的数组nums,找出[0, n]这个范围内没有出现在数组中的那个数。2。
2024-01-27 12:03:12
967
原创 刷题06 数组mid
给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个例如,,可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算结果等于target的不同的数目。5此题涉及回溯,函数参数需要包含数组下标,当前的数组之和。
2024-01-26 11:57:23
755
原创 代码随想录-贪心专题
贪心算法一般分为如下四步:1、将问题分解为若干个子问题2、找出适合的贪心策略3、求解每一个子问题的最优解4、将局部最优解堆叠成全局最优解。
2024-01-26 11:55:22
517
原创 代码随想录day24
组合问题,如果想让回溯法高效一些,可以加一些剪枝的操作。回溯法,一般可以解决如下几种问题:1、组合问题:N个数里面按一定规则找出k个数的集合2、切割问题:一个字符串按一定规则有几种切割方式3、子集问题:一个N个数的集合里有多少符合条件的子集4、排列问题:N个数按一定规则全排列,有几种排列方式5、棋盘问题:N皇后,解数独等等组合问题。
2024-01-25 20:00:40
1477
原创 刷题07 字符串easy
给你一个二进制字符串s。如果字符串中由1组成的连续子字符串由0组成的连续子字符串,返回true;否则,返回false。1203注意,如果字符串中不存在0,此时认为由0组成的最长连续子字符串的长度是0。字符串中不存在1的情况也适用此规则。
2024-01-25 13:29:44
1480
原创 代码随想录day24
如果想让回溯法高效一些,可以加一些剪枝的操作。回溯法,一般可以解决如下几种问题:1、组合问题:N个数里面按一定规则找出k个数的集合2、切割问题:一个字符串按一定规则有几种切割方式3、子集问题:一个N个数的集合里有多少符合条件的子集4、排列问题:N个数按一定规则全排列,有几种排列方式5、棋盘问题:N皇后,解数独等等。
2024-01-19 16:34:39
462
原创 代码随想录day23
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。寻找符合条件的左右节点,并将符合条件的左右节点接入左右子树。
2024-01-18 23:13:03
351
原创 代码随想录day22
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。从上往下遍历,找到的第一个大于p,小于q的节点就是二者的最近的公共祖先。
2024-01-17 14:29:06
373
原创 代码随想录day20
给定一个不含重复元素的整数数组。通过给定的数组构建最大二叉树,并且输出这个树的根节点。构造树一般采用的是前序遍历,每次找数组的最大值,因为先构造中间节点,然后递归构造左子树和右子树。由于每次都构造一个新数组,优化后,无需构造新数组,直接传入左右数组的下标。
2024-01-15 15:33:04
392
1
原创 代码随想录day17
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回true前置知识:(1)可以从上到下去查 所以需要前序遍历(中左右)(2)只能从下到上去查,所以只能后序遍历(左右中)根基的定义:左右子树之差不超过1,因此需要求每个节点的左右子树的,求高度应使用后序遍历,而判断时用,先判断当前节点是否满足条件,再判断左右子树是否也满足条件。
2024-01-12 20:55:15
412
1
原创 代码随想录day16
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7],做这道题之前需要先搞清楚高度与深度。,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。还可用用先序来求二叉树的深度,但是会麻烦很多,主要是左右子树都递归会重复。后序遍历:也可以认为是深度优先遍历迭代法:也可以理解为广度优先遍历,求最大深度也就是求层数。
2024-01-11 21:39:38
448
1
原创 刷题03 数组mid
使用哈希表,找出两个字符串数组中只出现过一次的公共字符串。map中记录者字符串以及字符串出席的频次。然后在数组查找,字符串相等且频次均为1的字符串即可。
2024-01-11 16:42:39
944
1
原创 代码随想录day15
需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。:把每一个节点的左右孩子翻转一下,就可以达到整体翻转的效果。(2)左不为空,右为空,不对称 return false左右都为空,对称,返回true。题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。(3)左右都不为空,比较节点数值,不相同就return false。(1)左节点空,右节点不为空,不对称,return false。
2024-01-10 17:54:50
353
1
原创 刷题02 数组easy
如果整个数组非递减,返回true,如果只有两个子数列非递减,并且两个子序列之间是有序的,返回true。先找到第一个不满足非递减的位置i,如果i==numsize,说明整个数组非递减。否则,就判断另一个子数组是否是非递减的,若不是,返回false,若是,则判断两个子数组之间是否有序,只需要判断nums[0]与nums[numsize-1]的大小。nums[0]是第一个子数组的最小值,nums[numsize-1]是第二个子数组的最大值。
2024-01-08 23:16:02
920
1
原创 代码随想录day13
题目:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。
2024-01-08 18:14:33
406
1
原创 代码随想录day11
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。若遇到左括号就直接入栈,若遇到右括号,若栈为空就匹配失败,若不为空就弹出栈顶,进行匹配, 最后栈空时则匹配成功。
2024-01-06 11:23:42
413
1
原创 代码随想录day10
用两个栈来实现队列,一个输入栈,一个输出栈,需要注意的是弹出操作,只有当输出栈为空时,才会一次性把输入栈中的元素都压入输入栈,否则直接取输出栈的元素。
2024-01-05 14:38:41
335
3
原创 代码随想录day09
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1此题为字符串匹配问题。
2024-01-04 12:08:27
449
1
原创 代码随想录day08
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。比较简单的反转操作。
2024-01-03 23:16:28
462
1
原创 代码随想录day07
题目:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。此题使用的是哈希表法,首先定义 一个map,用于存放a和b两数之和,value 放a和b两数之和出现的次数。
2024-01-02 23:37:22
376
原创 代码随想录day06
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: false你可以假设字符串只包含小写字母。
2023-12-31 20:57:43
897
1
原创 代码随想录day04
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换完成此题的关键在于明确指针指向的顺序,在使用指针的过程中使用多个变量容易搞错,所以直接用cur一个指针,利用它的next去定位后面的节点,然后记录已经断链的节点即可。此外,需要注意while循环的条件,如果cur后面已经没有两个节点了,就可以停止了。
2023-12-30 13:31:36
357
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人