166 链表倒数第n个结点
原题网址:https://www.lintcode.com/problem/nth-to-last-node-in-list/description
描述
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
样例
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/ class Solution {
public:
/*
* @param head: The first node of linked list.
* @param n: An integer
* @return: Nth to last node of a singly linked list.
*/
ListNode * nthToLast(ListNode * head, int n) {
// write your code here
if (n==||head==NULL)
{
return head;
}
ListNode l();
l.next=head;
ListNode *cur=&l;
ListNode *pre=head;
for (int i=;i<n;i++)//循环n次,cur指向第n个结点;
{
cur=cur->next;
}
while(cur->next!=NULL)//n不为结点总数(cur不为尾节点);
{
cur=cur->next;
pre=pre->next;
}//pre与cur走了(t-n)步,pre指向第t-n+1个结点,即倒数第n个结点;
return pre;
}
};
若初始pre指向l,pre指向第t-n个结点,即倒数第n+1个结点,最后返回pre->next。
或者初始cur与pre均指向head,则cur可循环n-1次,指向第n个结点。然后cur走到尾节点,循环t-n次,pre跟着走,指向第1+t-n个结点,即倒数第n个结点。
166 链表倒数第n个结点的更多相关文章
- 求单链表倒数第m个结点
问题:求单链表倒数第m个结点,要求不准求链表的长度,也不许对链表进行逆转 解:设置两个指针p和q,p.q指向第一个结点.让p先移动到链表的第m个结点,然后p和q同时向后移动,直到p首先到达尾结点.此时 ...
- 每天一个小算法(5)----找到链表倒数第K个结点
估计这个问题在面试中被问烂了. 思路是先找到正数的第K个结点的指针pT,然后和指向头结点的指针pN一起向后移动,直到第K个指针指向NULL,此时pN指向的结点即倒数第K个结点. 如图: #includ ...
- [PHP] 数据结构-输出链表倒数第k个结点PHP实现
输入一个链表,输出该链表中倒数第k个结点.第一个指针走(k-1)步,到达第k个节点,两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了 <?php clas ...
- 《剑指offer》---输出链表倒数第k个结点
本文算法使用python3实现 1 题目描述: 输入一个链表,输出该链表中倒数第k个结点. 时间限制:1s:空间限制:32768K 2 思路描述: 方法一:当链表长度为 $ n $ 时,输 ...
- Lintcode 166. 链表倒数第n个节点
----------------------------------- 最开始的想法是先计算出链表的长度length,然后再从头走 length-n 步即是需要的位置了. AC代码: /** * De ...
- 剑指Offer13 链表倒数第K个结点
/************************************************************************* > File Name: 13_KthNod ...
- 2.2---找链表倒数第K个结点
答案,注意,一种是递归,另一种是迭代,那么巧妙利用双指针: 迭代: public static LinkedListNode nthToLast(LinkedListNode head, int n) ...
- 19. Remove Nth Node From End of List【Medium】【删除单链表倒数第n个结点】
Given a linked list, remove the n-th node from the end of list and return its head. Example: Given l ...
- 输出单链表倒数第K个结点值
#include<iostream>using namespace std;#include<malloc.h>#include<stdio.h>typedef i ...
随机推荐
- 2816: [ZJOI2012]网络
传送们 把一个点拆成c个即可 浪费时间的水题... //Achen #include<algorithm> #include<iostream> #include<cst ...
- JS switch 分支语句
描述:根据一个变量的不同取值,来执行不同的代码. 语法结构: switch(变量) { case 值1: 代码1; break; case 值2: 代码2; break; case 值3: 代码3; ...
- ideal的maven项目不小心remove module,如何找回
找回方式: ideal的最右侧有个maven projects 点开后点击“+”,也就是Add Maven Projects,寻找不小心remove modules 的 子项目的pom文件所在的位置, ...
- error C2146: 语法错误: 缺少“;”(在标识符“CRC”的前面) ...\...\MyMethod.h
错误原因:头文件的顺序错误,这种情况一般是因为dxsdk的头文件放在其他头文件前面了. 问题复现: 这里如果将#include <ReadDataThreadClass.h>放到最末尾就不 ...
- CVE-2015-0235
看了下代码,由于各人能力问题,只是了解了漏洞的起因,知道哪里出了问题,但是不知道怎么用阿... 可怜... 这种漏洞,公布出来,只要不给EXP,估计威胁都不大.或者,就是我脑筋太死??? 首先,是网上 ...
- ASP.NET WEB API 特性路由
一.什么是特性路由? 特性路由是指将RouteAttribute或自定义继承自RouteAttribute的特性类标记在控制器或ACTION上,同时指定路由Url字符串,从而实现路由映射,相比之前的通 ...
- UBOOT的的 C 语言代码部分
调用一系列的初始化函数 1. 指定初始函数表: init_fnc_t *init_sequence[] = { cpu_init, /* cpu 的基本设置 */ ...
- 如何快速合并多个TXT文本内容
工作中有时候需要合并很多文本内容,例如一些推送清单之类,一个一个打开去复制粘贴的话,少量还行,如果txt文本数据量大(10+M以上)且文件数量多(成百上千),这种方式就显得很低效了.具体要求如下: ...
- Django问题
Django问题 'WSGIRequest' object has no attribute 'user' django python 关注 2 关注 收藏 0 收藏,413 浏览 当我的djan ...
- KMP算法简明法则
KMP算法也算是相当经典,但是对于初学者来说确实有点绕,大学时候弄明白过后来几年不看又忘记了,然后再弄明白过了两年又忘记了,好在之前理解到了关键点,看了一遍马上又能理解上来.关于这个算法的详解网上文章 ...