zoukankan      html  css  js  c++  java
  • 程序员面试金典-面试题 02.02. 返回倒数第 k 个节点

    题目:

    实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

    注意:本题相对原题稍作改动

    示例:

    输入: 1->2->3->4->5 和 k = 2
    输出: 4
    说明:

    给定的 k 保证是有效的。

    分析:

    双指针做法,快慢指针初始化为头指针,先让快指针向后移动k个节点,然后快慢指针同时向后移动,当快指针所指元素为空时,慢指针的元素恰好是倒数第k个元素。

    递归法,设置全局变量记录已经访问到倒数第几个节点,先递归遍历到最后一个节点,再向前找,更新变量值,当等于k时,返回当前结点的val值即可。

    程序:

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int kthToLast(ListNode head, int k) {
            ListNode f = head;
            ListNode s = head;
            int num = k;
            while(num > 0){
                f = f.next;
                num--;
            }
            while(f != null){
                f = f.next;
                s = s.next;
            }
            return s.val;
        }
    }
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int kthToLast(ListNode head, int k) {
            if(head == null)
                return -1;
            int v = kthToLast(head.next, k);
            K++;
            if(K == k){
                return head.val;
            }
            return v;
        }
        private int K = 0;
    }
  • 相关阅读:
    Python获取 东方财富 7x24小时全球快讯
    Elasticsearch 环境配置
    可执行jar包与依赖jar包
    IDEA注释模板
    CKEditor
    解决让浏览器兼容ES6特性
    asp.net一个非常简单的分页
    Asp.Net真分页技术
    jsp选项卡导航实现——模板
    nodejs类比Java中:JVM
  • 原文地址:https://www.cnblogs.com/silentteller/p/12401802.html
Copyright © 2011-2022 走看看