题目来自剑指Offer之十五。
class ListNode{ int value; ListNode next = null; public ListNode(int value){ this.value = value; } }
public static ListNode findKthToTail(ListNode head,int k){ if(head == null || k <= 0 ){ return null; } ListNode node = head; int nodesNum = 1; while(node.next != null){ nodesNum++; node = node.next; } node = head; int count = 1; while(k <= nodesNum && count != nodesNum - k + 1){ count++; node = node.next; } if(k <= nodesNum){ return node; } return null; }
public static ListNode findKthToTail2(ListNode head,int k){ if(head == null || k <= 0) return null; ListNode pre = head; ListNode behind = null; for(int i = 0; i < k - 1; i++){ if(pre.next != null){ pre = pre.next; }else{ return null; } } behind = head; while(pre.next != null){ pre = pre.next; behind = behind.next; } return behind; } <p></p>
我组建了一个技术交流群,提供免费的每日科技早报服务,里边也会有众多知名互联网企业的技术大佬一起交流学习,共同成长。需要的朋友可以加我微信(微信ID:919201148),我拉你进群,并有福利相送。
关注我的微信公众号,回复“礼包”领取我的学习资料
涵盖自学编程、Java技术、分布式笔记、算法刷题和程序员必读电子书等众多资料合集。