寻找模结点

[!Tip]

本节源代码见Github链接🔗


问题描述

给定一个单向链表,链表的结点编号i为1,2,3,...,n,其中n为链表中元素的个数,编写一个函数从表头开始找到最后一个满足i%k=0条件的元素,k是一个整数常量。例如,如果n为19,k为3,那么应该返回第18个结点


核心思路

由于n的值是未知的,所以需要一直遍历,直到遍历完链表。并在遍历过程中保存下最后一个模结点。


实现代码

【👉🏻>>点击展开查看代码】
        
/**  
 * 寻找最后一个模结点  
 *  
 * @param headNode  
 * @return NormalListNode  
 * @author: Max Solider  
 * @date: 2022/10/9 14:18  
 */
 static NormalListNode getLastModularNode(NormalListNode headNode, int k) {  
    if (headNode == null) {  
        return headNode;  
    }  
    NormalListNode modularNode = null;  
    int i = 1;  
    while (headNode != null) {  
        if (i % k == 0 ) {  
            modularNode = headNode;  
        }  
        headNode = headNode.getNext();  
        i++;  
    }  
    return modularNode;  
}
        
    

时间复杂度

时间复杂度为O(n),用于遍历链表。


空间复杂度

空间复杂度为O(1),用于存储临时变量。


© MaxSolider all right reserved,powered by Gitbook文件修订时间: 2022-11-07 21:51:45

results matching ""

    No results matching ""