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

LeetCode 每日一题笔记

0. 前言

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

1. 题目理解

问题描述

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

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

示例

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

输出:1

解释:nums4 = 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 存在,无需处理不存在情况。
相关推荐
linux-hzh12 小时前
百日算法修炼 · Day 12
算法·深度优先
额额额对了12 小时前
数据结构:二叉树
c语言·数据结构·算法
iNeuOS工业互联网12 小时前
iNeuOS_Vision_视觉分析,增加SAM3模型对实例分割和目标检测AI自动标注图片样本功能
人工智能·算法·目标检测
qeen8712 小时前
【数据结构】红黑树的算法原理解析与实现
开发语言·数据结构·c++·算法·红黑树
阿里巴巴首席技术官12 小时前
目标检测基础
笔记·yolo
码匠许师傅13 小时前
【C++ 面试真题】20. 聊聊 C++ 的标准库常用算法
c++·算法·面试
TJHHH.13 小时前
SQL注入学习总结
数据库·笔记·sql·学习·注入
自小吃多13 小时前
Capture软件原理图添加元器件笔记
笔记·嵌入式硬件
m0_5474866613 小时前
《数据结构与算法(Python语言版)》全套PPT课件2026
数据结构·算法
TJHHH.14 小时前
文件包含漏洞
笔记·安全·文件包含