LeetCode 每日一题笔记 日期:2026.04.13 题目:1848.到目标元素的最小距离

LeetCode 每日一题笔记

0. 前言

  • 日期:2026.04.13
  • 题目:1848.到目标元素的最小距离
  • 难度:简单
  • 标签:数组

1. 题目理解

问题描述

给你一个整数数组 nums(下标从 0 开始)以及两个整数 target 和 start,找出一个下标 i,满足 nums[i] == target 且 abs(i - start) 最小。

返回最小的绝对值。题目保证 target 一定存在于数组中。

示例

输入:nums = [1,2,3,4,5], target = 5, start = 3

输出:1

解释:nums[4] = 5,abs(4-3)=1。

2. 解题思路

核心观察

  • 要找离 start 最近的 target 位置,最小距离一定出现在 start 附近;
  • 可以从 start 位置向左右两边同时遍历,找到第一个 target 就是最近的;
  • 也可以分别向右、向左遍历所有 target,记录最小距离。

算法步骤

  1. 初始化最小距离为一个极大值;
  2. 从 start 向右遍历,遇到 target 就更新最小距离;
  3. 从 start 向左遍历,遇到 target 就更新最小距离;
  4. 遍历完成后返回最小距离。

3. 代码实现

java 复制代码
package com.sheeta1998.lec.lc1848;
class Solution {
    public int getMinDistance(int[] nums, int target, int start) {
        int ans = 999999999;
        for (int i = start; i < nums.length; i++) {
            if (nums[i] == target) {
                ans = Math.min(ans, Math.abs(start - i));
            }
        }
        for (int i = start; i >= 0; i--) {
            if (nums[i] == target) {
                ans = Math.min(ans, Math.abs(start - i));
            }
        }
        return ans;
    }
}

4. 代码优化说明

优化点:提前找到立即返回(最优效率)

从 start 向左右同步扩展查找,找到第一个 target 就直接返回,不用遍历全数组:

java 复制代码
class Solution {
    public int getMinDistance(int[] nums, int target, int start) {
        int n = nums.length;
        int d = 0;
        while (true) {
            int left = start - d;
            int right = start + d;
            if (left >= 0 && nums[left] == target) return d;
            if (right < n && nums[right] == target) return d;
            d++;
        }
    }
}

5. 复杂度分析

  • 时间复杂度 :O(n)O(n)O(n)

    最多遍历一遍数组。

  • 空间复杂度 :O(1)O(1)O(1)

    仅使用常数变量。

6. 总结

  • 核心思路:从起点向两侧查找目标值,取最小距离;
  • 最优解法是逐层向外扩展,找到即返回,效率最高;
  • 本题是简单的数组遍历与绝对值最小化问题。

关键点回顾

  1. 最近距离一定出现在 start 附近;
  2. 左右同时扩展查找是最优方案;
  3. 题目保证 target 存在,无需处理不存在情况。
相关推荐
Anycall.Q2 小时前
RULE (ICLR 2026)
算法
qingwufeiyang_5302 小时前
Mybatis学习笔记-1-快速入门
笔记·学习·mybatis
Tisfy2 小时前
LeetCode 1848.到目标元素的最小距离:数组遍历(附python一行版)
python·leetcode·题解·遍历
很小心的小新2 小时前
大模型应用开发笔记
人工智能·笔记·langchain·大模型
断眉的派大星2 小时前
数据结构——指针
数据结构·算法
Xpower 172 小时前
算法学习笔记 Day 1:迁移学习与域自适应(DANN/CORAL)
笔记·学习·算法
后季暖2 小时前
agent学习笔记4
笔记·学习
橘颂TA2 小时前
【笔试】算法的暴力美学——牛客 NC242:单词搜索,思路:dfs 算法
算法·深度优先
凯尔萨厮2 小时前
Spring学习笔记(基于注解)
笔记·学习·spring