You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java链表中如何实现查找元素最后出现的索引?

链表lastIndexOf方法实现问题解答

需求说明

  • 为LinkedIntList类实现lastIndexOf方法,接收一个整数参数,返回该值在链表中最后一次出现的索引;若未找到目标值,返回-1。
  • 限制:不能调用类中其他方法。
  • 示例:链表为[1, 18, 2, 7, 18, 39, 18, 40]时,lastIndexOf(18)返回6,lastIndexOf(3)返回-1。

类定义参考

public class LinkedIntList {
    private ListNode front;   // null for an empty list
    ...
}

原代码问题分析

你编写的代码:

public int lastIndexOf(int value) {
    ListNode current = front;
    int target;
    while (current != null) {
      
    if(current.data == value) {
        target = current.data;
         return target;
    }
      current = current.next;
     
        
    }
    return -1;
}

存在两个核心问题:

  1. 匹配到值时返回的是节点的data值,而非当前节点的索引;
  2. 首次匹配就立即返回,无法遍历到后续节点记录最后一次出现的位置。

修正后的代码

public int lastIndexOf(int value) {
    ListNode current = front;
    int lastIndex = -1; // 初始化为-1,表示未找到目标
    int currentIndex = 0;

    while (current != null) {
        if (current.data == value) {
            // 每次找到匹配值时,更新最后出现的索引为当前索引
            lastIndex = currentIndex;
        }
        current = current.next;
        currentIndex++;
    }

    return lastIndex;
}

关键思路说明

  • 用lastIndex变量持续跟踪最后一次匹配到目标值的索引,初始值设为-1(对应未找到的场景);
  • 用currentIndex记录当前遍历到的节点位置,从0开始随节点遍历递增;
  • 遍历整个链表,不中途返回——只要遇到匹配值就更新lastIndex,确保遍历完成后lastIndex存储的是最后一次出现的索引;
  • 遍历结束后直接返回lastIndex,自然覆盖“未找到返回-1”的要求。

内容的提问来源于stack exchange,提问作者user19334054

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:05:20