- 博客(63)
- 收藏
- 关注
原创 Leetcode|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
Leetcode| 常规题目求解~~~~~~
2024-10-27 21:39:41
344
原创 ●Leetcode| 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
242,该题目中数组范围比较短,可以数组使用并不会占太多的空间,利用数组的映射,查找到自己所需要的字符。349,这道题目的关键是去重,(衣服脱光才看到清楚,自己要找的数据是哪些)解法二:哈希表中的map(key无序,不重,不可改)202.题目中说的快乐数的判断只有俩种请跨。要么,不断拆分后,变为1。要么,不断的进行循环结果。
2024-10-27 19:17:36
315
原创 Leetcode|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
注意:涉及头节点的修改或者删除时,最好设置一个虚拟的头结点,方便简化代码,不必进行是否为头节点的的判断,简化code。//这一步的操作也是始终知道头节点的位置,方便后续的链表输出。面试题02.07(链表相交)
2024-10-21 22:18:56
372
原创 Leetcode|203.移除链表元素 ● 707.设计链表 ● 206.反转链表
一般情况下,头节点为null,不存在数据,但此时struct中,将head初始为首节点,故是有数据。若想要虚拟的头结点,则需要自己去手动的添加。将这个元素分为俩种情况,第一个:是头节点。
2024-10-20 02:05:25
582
原创 Leetcode|209.长度最小的子数组 And 59.螺旋矩阵||
当while条件成立时,说明最后添加的数据时过大,就需要不断的减小sum的值,那就是不停更新起始位置的下标。精髓部分说明:当while条件不成立时,意味着此时的sum不符合target的判断条件了,需要向前走了。解法二:滑动窗口(不断调节,子数组的起始位置和终点位置)2.如何移动起始位置和终点位置?循环不变量原则---临界条件的取舍。1.窗口内的元素是什么?
2024-10-18 21:13:20
385
原创 代码随想录第一天|704.二分查找 27.移除元素
注释:快慢指针,实质上是一个数组的自我复制,只不过里面有一些数据是不合格的,所有需要进行删除更新,而这时候,快慢指针的两者不同的作用就展示出来了,数组整体被分割为俩个部分。一为下标,二为数据,下标由slowIndex控制,数据由fastIndex控制,二者俩结合就形成了一个符合题意的新数组。写法一:左右区间可以相等,left = right(左右区间的值都可以取到,这是更新left和right的依据)写法二:左右区间不能相等,即为left<right。写法二:双指针法,快慢指针。
2024-10-16 23:37:54
460
原创 Exception in thread “main“ java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to
这个错误是,它发生在将Object[]类型强制转换为时。原因是 Java 不允许直接将一个Object[]类型数组强制转换为一个具体的泛型数组(如),这会在运行时引发异常。
2024-10-09 00:52:53
788
1
原创 string型,如何用return返回俩个string型
一般而言,return只能返回一个结果,但字符串是一种特殊的数据类型,将俩个字符串连接起来则可以输出俩个了。
2024-06-10 17:09:00
354
原创 代码随想录,总结篇
经过60天的算法训练,我从对数据结构的一无所知,到如今对,二分算法,动态规划,贪心算法等,都有了进一步的了解,与之同时我也明白自己的不足之处在对二叉树和链表等高级结构的学习,还有待提高,期待二刷时,能在进一步深入了解各种算法。
2024-05-21 22:36:24
255
原创 代码随想录,第41天
一个整数,要被拆分为的个数要n>=2,最少为俩个数,这时我们通常使用俩个for循坏从1到n开始拆分,难道如果要拆分为三个数时,我们要使用三个for循环吗?那如果是拆分为无穷多个呢?难道要一直拆分下去,上面代码已经给出了答案。
2024-04-29 18:18:55
94
原创 代码随想录,第39天
62.不同路径 class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m, vector<int>(n, 0)); for (int i = 0; i < m; i++) dp[i][0] = 1; for (int j = 0; j < n; j++) dp[0][j] = 1;
2024-04-27 21:50:26
311
原创 代码随想录,第34天
在进行从右到左的遍历之前,我们已经进行了从左到右的遍历,简单的来说,我们在草稿纸上进行模拟的过程也是以从左到右的遍历结果为主,所以在进行从右到左遍历的过程中,要取最大值,既可以满足左遍历,又可以满足右遍历。计算出到每一个加油站的剩余油量是正,还是负,关键还是计算全程的油量总和是正,还是负数。俩种题解,但是如果k的数值过于大,那么第二种,sort解法,还是最优题解。1005.K次取反后最大化的数组和。
2024-04-23 00:45:07
153
原创 代码随想录,第32天,买股票的时机,跳跃游戏等问题
这道题要求的是最少的步骤跳到终点,那么就不可以随意的跳动自己的步数,要根据覆盖范围是否能到达最后的终点,而进一步来决定。思路:将利润平分的每俩天的利润之和,因为每一天既可以买股票,又可以卖股票,要想收获利润最少是第二开始。这道是,只要你能够到达最后的终点,随便你这么跳都是可以的。122.买股票的时机。
2024-04-21 02:08:12
149
原创 代码随想录,第31天,贪心算法之入门,分发饼干,摆动序列,最大子序和
这道题要注意,在单调中的平坡,preDiff = curDiff,这个语句放在if条件判断中,可以有效规避第三种情况的发生。“局部最优”,只要当前的总合为正数,对下一个数的累加就会起到推力的作用。局部最优为,每一块饼干都能满足一个小孩子。
2024-04-20 02:23:42
132
原创 代码随想录,第30天,N皇后问题
每一行的每个位置是否能放下n皇后,要看这个位置的行,列,和对角线是否符合题意。找到终止条件,即为row = n;
2024-04-19 00:42:22
218
原创 代码随想录,第29天,全排列问题
全排列问题,,相对于组合问题多了,取数的过程可以先前回,而树层去重,可以使用used数组,进行排查,数组的数据使用情况。46.47,全排列问题。
2024-04-17 23:29:35
127
原创 代码随想录,第28天,回溯算法之复原IP地址,子集问题
startIndex>=nums.size(),相比于之前的==,这里要加上>,是因为>,代表着树枝递归的深度,而取==,是因为==,代表着,递归的宽度。这道问题是属于回溯算法中的切割问题,startindex,即为切割线。这道题目与组合问题的最大区别在于,path的路径收集为每一个节点。这道问题涉及树层的去重问题,以及组合问题的总合。
2024-04-16 23:34:25
179
原创 代码随想录,第27天,回溯算法之组合问题2
主要思路:去重的步骤是本题的关键,主要是分清,是树枝去重呢?由一个解题集合中可以出现多个相同的元素可知,去重指的是树层的去重,这时就要引进一个used数组来记录元素的使用情况。题目的快排,由于是vector型的,故要sort(v.begin(),v.end()),而数组则是为sort(数组名,数组大小)//默认情况下为从小到大,如果要进行从大到小,则可以自己编写cmp。主要思路:题目中的元素可以被重复的取值,直到return条件的满足,在进行下一层的递归时,i还是i。
2024-04-16 01:06:35
267
原创 代码随想录,第25天,回溯算法之组合问题(对应leetcode)
主要思路:相对于正常情况下的组合问题,该问题多了一个总值的判断条件。主要思路:找到数字与字母之间的映射关系。17.电话号码的字母组合。216.组合总和111。
2024-04-15 19:07:00
171
空空如也
请问使用贪心算法的求解思路
2024-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅