zoukankan      html  css  js  c++  java
  • 链表中倒数第K个数

    解题思路

      为了能够只遍历一次就能找到倒数第k个节点,可以定义两个指针:

      (1)第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动

      (2)从第k步开始,第二个指针也开始从链表的头指针开始遍历

      (3)由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。

               当我们用一个指针遍历链表不能解决问题的时候,可以尝试用两个指针来遍历链表。可以让其中一个指针遍历的速度快一些(比如一次在链表上走两步),或者让它先在链表上     走若干步。

       另外还要注意链表为空和K为0的情况

    问题描述

      输入一个链表,输出该链表中倒数第k个结点

    代码实现

     1 /*
     2 public class ListNode {
     3     int val;
     4     ListNode next = null;
     5 
     6     ListNode(int val) {
     7         this.val = val;
     8     }
     9 }*/
    10 public class Solution {
    11     public ListNode FindKthToTail(ListNode head,int k) {
    12         ListNode first = head;
    13         ListNode last = head;
    14         if(head==null||k==0){
    15             return null;
    16         }
    17         for(int j=0; j<k-1; j++){
    18             if(first.next!=null){
    19                 first = first.next;
    20             }
    21             else{
    22                 return null;
    23             }
    24         }
    25         while(first.next != null){
    26             first = first.next;
    27             last = last.next;
    28         }
    29         return last;
    30     }
    31 }
  • 相关阅读:
    庄家试盘的K线形态
    股票基本知识入门提纲
    我与猫
    夜雨不眠时
    快速排序
    由float转std::string的方法
    BugFree + EasyPHP在Windows平台搭建步骤详解
    安装VS2008的时候Windows Mobile 5.0 SDK R2 for pocket pc错误解决方案
    收集WCF文章
    linq to ef(相当于sql中in的用法)查询语句
  • 原文地址:https://www.cnblogs.com/wanglinyu/p/8516846.html
Copyright © 2011-2022 走看看