- 博客(9)
- 收藏
- 关注
原创 反转链表Ⅱ问题
第一次循环,就是把3插入1,2之间,链表变为1->3->2->4->5,此时pre->next已更新为3,但是cur依然为2,要是再进行第二次循环,那么要把4,插入1,3之间,要是代码为nex->next=cur,会导致结点3的消失,链表变为:1->4->2->5。//pre是要插入位置的前驱结点,cur是当前结点是位于所要进行插入操作元素的前驱结点,nex是指当前要插入的结点。例如:链表为1->2->3->4->5,反转区间为left=2 ,right=4(即反转2->3->4)//头插法的实现过程。
2025-04-29 00:19:45
835
原创 合并两个有序链表问题
/用current指针指向新链表的新结点,初始化指向哑结点。=NULL){ //当遍历完之后,检查那条链表还没空,直接将current指针指向该链表。构造哑结点尤其适合用于处理需要动态构造新链表的场景,哑结点作为新链表的占位头节点,让所有实际结点都成为它的后续结点,要想合并这两个有序链表,只需要判断当前指针所指的结点的数值,然后再进行排序即可。,避免了对于头节点的特殊处理,不然你还需要考虑新链表的头结点应该指向哪条链表。//直接返回哑结点的后继。新链表是通过拼接给定的两个链表的所有节点组成的。
2025-04-26 18:21:57
524
原创 反转字符串中的单词问题
对于中间存在多个空格的情况要想简化为一个空格,则需要在fast遍历到第一个空格时,使slow指针所在下标输入空格,然后用while循环遍历完接下来的所有空格直到遇到非空格字符的下一个单词为止。首先,定义一个removeExtraSpaces辅助方法来消除多余的空格,要定义fast,slow两个指针,fast指针用于遍历原字符串,而slow指针用于遍历处理后的字符位置。if(s[i]==' '||s[i]=='\0'){ //遇到空格或者终结符的时候,执行把单词反转。//更新下一个单词的初始位置。
2025-04-24 00:30:32
1317
原创 最后一个单词长度问题的总结
这个问题的实现主要逆序跳过末尾的空格符号,然后计算第一个非空格字符开始到遇到空格或者是字符串开头部分,并统计这段遍历过的长度,这个长度就是最后一个单词长度。代码中运用到了strlen(s),是用于获取整个字符串的长度也包括末尾的空格在内,知道遇到‘\0’为止。} //遇到第一个非空格符号开始计数,用lengthOfLastWord变量来记录单词长度。} // 这个while循环是用于解决逆序跳过末尾的逆序空格符号。该过程的时间复杂度为O(n),空间复杂度为O(1).
2025-04-22 09:40:38
540
原创 H指数问题的学习总结
/构建计数数组,计数数组的大小为n+1。因为该数组是用来记录论文引用次数的篇数,因此运用次数是从0到n(当引用次数大于n,此时也是数组下标为n的位置的值+1)//因为h的指最大就是n,不可能会超过论文发表次数,然后逆序找出最大能满足论文引用次数超过h次的论文总数total大于h的此时的h的指。核心思想:根据h指数的定义可知,存在h篇论文,每一篇至少被引用了h次,且剩下的论文引用次数不超过h次。//当引用次数大于等于n时,数组下标为n的位置的值+1。//当引用次数小于n时,计数数组对应位置值+1。
2025-04-21 11:47:40
347
原创 跳跃游戏问题的学习总结
其本质就是通过局部的一个最优解进而推导出全局的最优解,跳跃游戏的局部最优解就是处于该所能跳跃到达的最远位置,而不需要具体考虑所有经过的有效路径。//内循环的return true用于遍历过程中的提前终止,优化效率。//这是对于边界的情况的考虑,如果这个数组只有一个元素,那么默认返回true。//当遍历的数组下标i>maxreach,说明了之前的所有元素所能跳到的最远位置都无法到达i位置,因此说明直到最后都无法到达最终点。引入核心变量最远可达距离的数组下标maxreach来记录遍历的元素所能到达的最远距离。
2025-04-18 12:05:55
305
原创 买卖股票的最佳时机问题的总结
if(prices[i]-minprice>maxProfit){ //如果遇到更高利益,更新最高利益变量。if(prices[i]<minprice){ //更新最低买入价格。
2025-04-17 09:50:21
365
原创 旋转数组的两种解法的总结
借助辅助函数,构造能逆转数组的函数方法reverse(),将原数组整体逆转一遍,知道需要轮转的元素个数k,然后将数组前k为元素进行逆转,再将k位元素后面的元素进行逆转从。三次逆转就可以达到轮转数组的目的。借组辅助数组newArr[],利用循环数组的原理使用(i+k)%numsSize,可以求出原数组i-1位置的元素在newArr[]中的存放位置,之后再把辅助数组复制到原数组中。第一趟:7,6,5,4,3,2,1。第二趟:5,6,7,4,3,2,1。第三趟:5,6,7,1,2,3,4。
2025-04-16 10:22:40
400
原创 多数元素问题的基本原理的学习
这种算法时间复杂度仅为O(n),空间复杂度为O(1),高效且节约空间,适用于处理大规模数组。计数器的值就会减一,当计数器的值变为0,说明在数组此位置己方阵营的士兵数量已经和对方相。所以应该计数器应该更换候选元素,最后遍历完一遍数组所保留的候选元素,即为多数元素。通过比喻成双方士兵阵营,在遇到己方时,计数器的值会加1,而在遇到不同阵营的士兵时。在多数元素问题的解决中,了解到了基于多数元素生存优势原理的摩尔投票分核心思想。主要涉及初始化候选元素和计数器两个变量。
2025-04-15 07:53:41
286
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅