问题描述
给定一个单向链表,编写一个函数从表尾开始找到第一个满足n%k==0条件的元素,其中n为链表中的元素的个数,k为一个整数常量,例如,如果n为19,k为3,那么应该返回第17个结点
解答
ListNode modularNodes(ListNode head,int k){
ListNode modularNode = head;
//边界条件判断
if(k<=0){
return null;
}
//寻找第K+1个后继结点
for(int i =0;i<k;i++){
if(head != null){
head = head.getNext();
}else{
return null;
}
}
while(head != null){
//头节点指针和K+1节点每次向后移动一位,且头节点与k+1个结点的定长为K,所以,当K+1节点移动到尾端,头节点所在节点,就是i%k==0的第一个结点
modularNode = modularNode.getNext();
head = head.getNext();
}
return modularNode;
}