- 博客(38)
- 收藏
- 关注
原创 94.二叉树的中序遍历
先定义空数组方便后续使用,将一个空数组存储对应的根,随后对根进行遍历,将根溢出的元素存储到另一个数组中去,再将根传给他的左节点,若不是r的话,则设置新变量赋值给存入根的数组的溢出元素,然后转入右节点。
2023-12-08 22:22:02
93
原创 102.二叉树的层序遍历
设置while循环对每层进行遍历,将每层的节点元素弹出后存入一个空的数组,先设置空的数组,将根节点添加一个数组中方便后续遍历。最后将每层的元素进行遍历和存储。
2023-12-08 22:21:00
75
原创 12.3--12.4学习情况
利用字典存储将遍历的数组中的元素和元素和,遍历其中元素和是否在hashmap字典中,有的话继续将结果自加一往后存储,否则将其暂时存储为1,定义一个count将其初始值转为0,并将对剩下两个元素的元素和进行存储,判断当前存贮的结果值是否满足条件,最后返回输出结果。老步骤,对所建立的数组进行循环遍历,将其存储到建立的count数组中并临时存储自加1,先观察理解题目,将存储到的数组和范围确定下来,建立一个用于存储最终结果的数组。之后再对范围内的总长度进行比较解析,将数组结果返回到最终结果的数组中去。
2023-12-05 22:13:02
88
原创 32.有效的字母异位词
2.开始对所定义的字符串遍历,确定其是否存在字母a,将a所对应ASCII中的数值进行记录并加1。3.对t字符串进行循环遍历,确定是否再次出现字母a,找到并且记录,将对应的数值减一。4.对对应的26个编码进行循环,如果出现的次数不等于零,则返回错误并清空。1.定义一个数组记为record,并且将数组所有元素初始化为0。
2023-12-04 21:58:37
47
原创 24.删除链表中的第N个节点
定义快慢两个指针,快指针始终比慢指针多走n+1步,遍历n次,将快指针抵达链表的尾部,再对慢指针走到的地方进行更新到n+1处,从而达到删除第n个节点的目的。
2023-12-03 20:50:00
170
原创 24.两两交换链表节点
开始进行交换,将第一个节点和第二个节点进行交换后,再将交换后的第二个节点的下一个节点相连接。最后将current返回到遍历当中的第二个节点处再进行下一次的循环。对当前的current第一个和第二个进行循环遍历。用temp1进行存储第三个节点连接。用temp暂时存储第一个节点链接。
2023-12-02 17:06:14
51
原创 206.反转链表
对当前给的链表进行循环遍历:先定义一个temp存储头节点后的第一个节点,最后将pre赋值给cur.next即可,将pre=cur cur=temp目的是将后移,最后开始返回当前的pre值即可。先定义一个cur将他赋值为头节点,再定义一个pre,因为要反转,反转后的pre刚好指向None,将pre赋值为None即可。
2023-12-02 17:02:53
36
原创 203.移除链表中的元素
利用数据结构中的知识,遍历当前链表如果当前链表的结点等于相应的值时,直接跳过,将当前节点连接到下一个结点的,如果不等于当前节点,再重新创建个链表。之后开始遍历链表,对当前节点进行判断后最后返回相应修改后的链表。
2023-12-01 22:52:05
43
原创 136.出现一次的数字
利用位运算对题目进行解答,由题知需要找出给出的数组nums中只出现一次的数组,则根据位运算中^=的性质运算:两个数对应位相同时返回0,否则为1,可进行遍历尝试。
2023-11-29 21:00:08
44
原创 322.零钱兑换
3.确定初始化,dp数组表示最小硬币数目,对后续比较时会有影响,将dp数组初始化成最大即可。1.确定dp数组的含义:dp[i]表示能凑齐价值为amount的最小硬币数目。4.确定遍历范围:确定是先遍历硬币还是先遍历容器,对背包问题这题没有多大影响。5.返回求得的最小硬币数量。
2023-11-28 21:30:11
48
原创 377.组合总和IV
4.确定遍历范围:正常从1--target开始遍历即可,在nums里遍历合适的数num最后返回target值的数。给出nums和target,让求target的和,因此可以借用动态规划遍历开始。2.确定递推公式:当num<=i时可将i-num的值赋值给dp【i】3.确定初始化:定义一个长为target+1的数组,初始化为零。1.确定dp数组及其下标含义:dp【x】为和是x的数。
2023-11-25 19:23:51
49
原创 518.零钱兑换||
开始时背包容量和当前的硬币数量都应为0;因此可将最开始定义的二维数组初始化为零。当容量j<前i件硬币时,令dp[i][j]=dp[i-1][j]4.确定遍历的范围:将二维数组从头开始遍历到结尾即可。dp[i][j]是指前i件物品放入容量为j的书包中。
2023-11-24 17:04:30
47
原创 二叉树的相关知识总结
1.完全二叉树:左右树的高度相同且必须按编号顺序的满二叉树。对于树的高度求法有2的k次方-1,k为树总的元素数。2.满二叉树:按照编号顺序排列的树。3.平衡二叉树:左右树的高度差<=1。前序遍历(递归法,迭代法)中序遍历(递归法,迭代法)后序遍历(递归法,迭代法)
2023-11-22 21:59:38
51
原创 动态规划解决完全背包问题
因为dp[j] 是根据 下标j之前所对应的dp[j]计算出来的。只要保证下标j之前的dp[j]都是经过计算的就可以了。01背包问题内嵌循环是将背包内部元素从大到小遍历,目的是将保证每个元素只添加一次,动态规划解决完全背包问题时与解决01背包问题最显著的区别在于遍历的嵌套顺序。在完全背包中,对于一维dp数组来说,其实两个for循环嵌套顺序是无所谓的!完全背包问题则需要从小到大遍历元素,且每个元素可以添加很多次。
2023-11-22 15:10:48
50
原创 494.一和零
dp[i][j] 可以由前一个strs里的字符串推导出来,strs里的字符串有zeroNum个0,oneNum个1。dp[i][j] 就可以是 dp[i - zeroNum][j - oneNum] + 1。dp[i][j]:最多有i个0和j个1的strs的最大子集的大小为dp[i][j]。3.初始化数组:将全部元素初始化为零。遍历设置的字符串strs里的m和n。
2023-11-21 20:30:18
51
原创 226.翻转二叉树
了解题目是翻转二叉树,因此直接把左右节点,左右子树换一下即可。1.确定递归的参数和范围。2.去顶终止遍历的条件。3.确定单层遍历的逻辑。
2023-11-21 19:41:40
68
1
原创 494.目标和
开始递推时,初始化所有条件都为零,并且当定义的数组大于当前相加数所有的总和时,必有False,此时返回为零即可。基于经典的背包问题,必须从头开始遍历,动态规划序遍历两个数组,都是从头,遍历n个元素即可。dp[i][j]表示填满容量为nums的“背包”可以有dp[i][j]种方法。将所有的数组元素,初始化为零,用来存储当前运算的值。由题意可知正号的数之和减去负号的数之和就是目标值。dp[0][0]=1即可。
2023-11-20 22:00:44
56
1
原创 动态规划解决背包问题
放物品i:由dp[i - 1][j - weight[i]]推出,dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值。不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。二维数组应由两个for循环来解题,将背包遍历完全。
2023-11-19 21:19:59
56
1
原创 1049.最后一个石头的重量II
1.定义出total=总石头的重量和,在定义变量n,m分别为数组stones长度一半(类似于背包总容量)和总重量一半。4.确定遍历范围,在i数组中将其全部元素遍历即range(n),在j数组里时需将遍历m个元素,且从第一个元素开始。3.初始化,将定义的二维数组列表全初始化为False,将的dp[0][0]初始化为True。5.将判断条件公式化,j<stoens[i]时,第i+1个石头的重量=第i个石头的重量。2.定义dp[][]二维数组,其含义为:dp[i][j]为第i个石头的重量为j。
2023-11-19 19:21:49
47
1
原创 101.分割等和子集
当一个数大于数组总所有数的总和的一半时,不录入该元素;当该元素小于总和时可以录入。4.遍历数组:先遍历数组总的所有元素,将二维数组中所有元素在进行奇偶分化,1.了解下标与数组的含义:dp[i]即为能存储i容量的数组。确定为奇数或者总和等于数组元素和一半时依然遍历为0。得dp[i][j]=dp[i-1][j](大于)5.最后利用公式进行运算,并且将元素进行返回。3.初始化数组,一开始时,存储数据的数组为零。
2023-11-18 19:17:47
61
1
原创 动态规划---2760.最长奇偶数组
4.确定遍历范围,使用循环将数组遍历,根据上述条件写成判断条件,根据不同条件执行不同命令。1.确定数组下标及其含义店的dp[i]即为判断奇偶数的最大数目。2.找到递推公式,可以分步思考,找出一定范围内不同的值。3.初始化数组,将初始元素全变位为零。5.返回最长奇偶数组。
2023-11-16 22:24:55
68
1
原创 动态规划---96.不同二叉搜索树
1.举例发现规律了已得知,后一个数的头节点数等于自身节点数加上前面所有数的节点数目与分叉树的乘积。2.则递推公式有:dp[i]=dp[i-j]*dp[j-1]+dp[i]对零来说没有意义,则可以从一开始遍历,将0元素初始化为一。当i在n范围内是时,只将i遍历n次即可。j此时在i范围内,则可以遍历i次。
2023-11-15 23:02:43
68
原创 动态规划---383.整数拆分
4.找到递推公式:分解整数得到的乘积(i-j)*j即为乘积值。2.初始化:求最大乘积值时dp【i】当其为0,1时无意义。3.确定遍历范围:从第三个开始,遍历n-1个元素。1.明确dp[i]含义:指示得到的最大乘积。
2023-11-14 22:11:37
101
1
原创 动态规划---63.不同路径
2.确定递推公式:与62.不同路径一样,机器人也是只能向下,向右移动,则只需统计其x和y轴上不同位置的路径即可。4.确定遍历范围:题目中求机器人到达指定网格内,跟不同路径一样,可以只从(1,1)开始遍历。1.确定数组下标含义:dp[i][j]表示机器人移动到坐标位置时总的路径数目。当在i轴移动有(i,0)则有一条路径。
2023-11-13 23:30:00
28
1
原创 动态规划---62.不同路径
到达(x,y)时需要走(x-1,y-1)次,则从x走和从y走都是一样的。3.确定初始化:可看作点在(0,0)默认位置,此刻即需将其初始化x轴和y轴即可。2.找到递推公式:只能向下向右移动一步,则即可计算其在x轴和y轴移动总和即可。1.确定下标及其含义:dp[i][j]为到达(i,j)时的路径条数。4.确定遍历范围,因为在(i,0)(0,j)上移动只有一条路径。5.返回到所需要的总路径数目即可(x-1,y-1)题干所要求的为到达指定坐标的不同的路径数目。确定遍历范围时可以从(1,1)开始。
2023-11-12 23:45:00
33
1
原创 动态规划---746.使用最小花费爬楼梯
2.根据题意找出递推公式:dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])4.找好数组需要遍历的范围,定义的为len(cost),则需要遍历的数组范围为cost长度加一,从第二层开始遍历。3.对定义好的数组进行初始化:确定在第0台阶时所耗费体力和在第1台阶时所耗费体力,进而进行计算。1.先确定数组dp[i]的下标及其含义:dp[i]表示为到达第i层台阶所需要花费的体力。5.返回花费的最小体力,设置测试类,进行输出验证。
2023-11-11 22:00:00
46
1
原创 动态规划---338.比特位计数
主要思路还是从确定数组,进行初始化并且将需要遍历的范围确定下来,最重要的一步还是公式。确定奇数偶数化为二进制数所需要的原理。一开始还是想按照之前做题的动态规划五部曲,到公式那一步卡了很久,最后到leecode官方题解下得到指点。奇数二进制可化为对二取余剩的余数加上得到的偶数值,偶数则可加零。dp[i]={dp[i−1]+1 i为奇数。dp[i//2]i为偶数。
2023-11-10 21:15:00
43
1
原创 动态规划---509.斐波那契
4.想办法遍历数组,有上述公式可知,元素由第一个开始依次向后存储,所以,需要从前往后开始遍历数组。2.初始化dp数组中各元素为零,定义dp[0]=0;5.将由公式运算的结果返回到数组新相加的和元素中。1.先创建一个dp数组来确定存储递归得到的数据。6.最后由测试类检测是否正确。
2023-11-09 22:00:00
32
1
原创 动态规划---119.杨辉三角||
根据题可以用列表储存每次计算出来的结果,到最后在返回-1行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。,返回「杨辉三角」的第。
2023-11-08 21:00:00
48
1
原创 动态规划题---杨辉三角
triangle.append(cur)#将cur列表添加到triangle列表中去。print("横行输出:{}".format(triangle))#横向输出检查是否完善。triangle=[[1],[1,1]]#先将需要的triangle列表头和尾定义完成。cur.append(pre[j]+pre[j+1])#添加相加后的和。n=eval(input("请输入要打印的行数:")) #定义需要从键盘录入的行数。pre=triangle[i-1]#上一行元素。cur=[1]#首行元素。
2023-11-07 21:25:43
51
原创 动态规划题————爬楼梯
result=climbstairs(n-1)+climbstairs(n-2)/返回次数相加。def climbstairs(n):/定义方法,递归计算。此方法效率较高,运行中不易出现误判。利用递归、从中间值保存在字典中。
2023-11-06 20:59:55
45
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人