Java教程

单链表的面试算法题[更新中...]

本文主要是介绍单链表的面试算法题[更新中...],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 新浪面试:请设计一个单链表,给定头结点和整数k,返回单链表倒数第k个结点。

代码[Java实现]:

/**
 * 返回单链表倒数第k个结点: [新浪面试题 & 剑指Offer.22]
 *    思路:1. 接收头结点和k值
 *         2. 整体遍历,得到链表长度
 *         3. 再次遍历,返回(len-k)个值即为倒数第k个结点
 * @author KyleHsu
 */
public Node lastKNode(Node head,int k){
  // 没有结点,没有找到
  if (head.next == null){
    return null;
  }
  int len = SinglelinkedlistTest.getLen(head);
  // 如果给的k不在链表长度范围内,肯定找不到
  if (k<=0 || k>len){
    return null;
  }
  Node temp = head.next;
  for (int i = 0; i < (len-k); i++) {
    temp = temp.next;
  }
  return temp;
}
/**
 * 返回单链表的有效节点个数
 * @author KyleHsu
 */
public static int getLen(Node head){
  if (head.next == null){
    return 0;
  }
  int length = 0;
  Node temp = head.next;
  while (temp != null){
    temp = temp.next;
    length++;
  }
  return length;
}
这篇关于单链表的面试算法题[更新中...]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!