首页 > 编程语言 >9.23算法

9.23算法

时间:2023-09-23 17:57:01浏览次数:43  
标签:9.23 head slow ListNode fast next 链表 算法

删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

 

示例 1:


输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]
 

提示:

链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
 

进阶:你能尝试使用一趟扫描实现吗?

相关标签

C++

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     ListNode *next;  *     ListNode() : val(0), next(nullptr) {}  *     ListNode(int x) : val(x), next(nullptr) {}  *     ListNode(int x, ListNode *next) : val(x), next(next) {}  * };  */ class Solution { public:     ListNode* removeNthFromEnd(ListNode* head, int n) {     ListNode *fast = head;     ListNode *slow = head;     for(int i=0;i<n;i++){         fast = fast->next;     }     if(fast == nullptr){         return head->next;     }     while(fast->next != nullptr){         slow = slow->next;         fast = fast->next;     }     slow->next = slow->next->next;               return head;     } };   key:关键在于,走了n次,剩下length-n次,我要让fast停在链表结尾处,这样slow在倒数第n+1个位置,以防处理不了空指针问题

标签:9.23,head,slow,ListNode,fast,next,链表,算法
From: https://www.cnblogs.com/minipython-wldx/p/17724811.html

相关文章

  • 算法基础之快速排序
    quick_sort方法中如果i=l,j=r会死循环的分析示例代码voidquick_sort(inta[],intl,intr){if(l>=r)return;inti=l,j=r;//此处设置会导致死循环intx=num[(l+r)>>1];while(i<j){while(a[++i]<x);//死循环的地方while(a[--j]>x......
  • 算法基础之高精度总结
    高精度算法分类分类:加、减、乘、除其中加减乘都适用于两个数都是高精度,除法因为除数是高精度的话不好用整除的方法,所以除法时被除数是高精度,除数是整型。高精度加减乘除的异同点加和乘相同点需要从低位到高位处理for(inti=stra.size()-1;i>=0;i--)c.push_back(stra[i......
  • 9.23总结
    代码时间(包括上课):4h代码量(行):360今天学习了Java,针对算法与数据结构进行了学习,今天我做了两道算法题,并且学习了基本查找,二分查找,还有二分查找的升级版,以及插值查找及其升级版,还有冒泡排序和选择排序,具体可以看我其他博客。......
  • 2023.9.23
    BP8906[USACO22DEC]BreakdownP一个有向完全图(包括自环),进行\(n^2\)次删边,问每次删边后从\(1\)到\(n\)的长为\(k\)的最短路长度,或指出不存在长为\(k\)的\(1\)到\(n\)的路径。\(n\le300\),\(2\lek\le8\),\(1\lew_{i,j}\le10^8\).容易想到分层图,直接跑是\(O(......
  • 算法基础之二分查找
    原题链接二分查找中的mid+1和mid-1的问题二分查找中的边界问题处理不好很容易导致死循环和计算错误的问题,以题目数的范围为例。题目大意​二分查找重复数第一次出现的位置和最后一次出现的位置。数学含义​第一次位置即找到一个长度最大的>=X区间的左边界​最......
  • 深度学习算法中的参数共享(Parameter Sharing)
    引言在深度学习算法中,参数共享(ParameterSharing)是一种重要的技术,它通过共享模型的参数来减少模型的复杂度,并提升模型的性能和泛化能力。本文将介绍参数共享的概念、原理以及在深度学习算法中的应用。参数共享的概念参数共享指的是在模型的不同部分使用相同的参数。在传统的机器学......
  • 算法训练day8 LeetCode 344
    算法训练day8:LeetCode344.541.151.剑指offer05.58.344.反转字符串题目344.反转字符串-力扣(LeetCode)题解代码随想录(programmercarl.com)classSolution{public:voidreverseString(vector<char>&s){for(inti=0,j=s.size()-1;i......
  • 算法题——定义一个方法自己实现 toBinaryString 方法的效果,将一个十进制整数转成字符
    用除基取余法,不断地除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。privatestaticStringtoBinaryString(intnumber){StringBuildersb=newStringBuilder();while(true){if(number==0)break;intyushu=num......
  • 常用算法模版
    常用算法模版今天学会在https://godbolt.org/看汇编了。顺便卡了下常数,以及简单的(不是)压行。快读signedread(){signednum=0,flag=1;charch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')flag=-1;for(;isdigit(ch);ch=g......
  • 算法题——实现类似parseInt的方法
    Scannersc=newScanner(System.in);Stringstr="";while(true){System.out.println("请输入");Stringstr1=sc.nextLine();if(str1.length()<1||str1.length()>10||str1.charAt(0)=='0'){System.out.......