LeetCode第34题在排序数组中查找元素的第一个和最后一个位置

继续打卡算法题,今天学习的是LeetCode的第34题在排序数组中查找元素的第一个和最后一个位置,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

这个题目里的数组是有序的,同时需要查找数字出现的第一个和最后一个位置,我们可以想到使用双指针遍历这个数组,只要依次查找等于目标值的位置,并且更新第一个和最后一个位置即可。

编码解决

java 复制代码
class Solution {
    public int[] searchRange(int[] nums, int target) {

        int start =0; 
        int end = nums.length -1;
        int[] result = {-1,-1};
        int findMin = 0;
        int findMax = 0;
        while(start <= end) {
            //查找并更新第一个位置
            if(nums[start] == target && result[0] == -1){
                result[0] = start;
                findMin =1;
            } else {
                if(findMin == 0) {
                    start++;
                }
            }
            //查找并更新最后一个位置
            if(nums[end] == target && result[1] == -1) {
                result[1] = end;
                findMax = 1;
            } else {
                if(findMax == 0) {
                    end--;
                }
            }
            //查找完成了,停止查找
            if(findMax ==1 && findMin == 1) {
                break;
            }
        }
        return result;
    }
}

总结

快速查找数组中数字除了二分法,二分法是从中间往两边查找

有些场景也可以使用双指针法,双指针法是从两边往中间查找

相关推荐
sheeta19981 分钟前
LeetCode 每日一题笔记 日期:2026.05.07 题目:3660. 找到所有可以到达的最大值
笔记·算法·leetcode
SamDeepThinking2 分钟前
RocketMQ消息可靠性的三道关卡
java·后端·程序员
经济元宇宙5 分钟前
哪款工业仿真软件上手简单?企业常用款推荐
人工智能·算法
Hesionberger7 分钟前
LeetCode79:单词搜索DFS回溯详解
java·开发语言·c++·python·算法·leetcode·c#
大侠区块链12 分钟前
我面试了上百个想进 AI 公司的人,发现他们都搞错了一件事--深度精读 | 对话 Anthropic Claude Code 产品负责人 Cat Wu
人工智能·面试·职场和发展
纪伊路上盛名在26 分钟前
聊一聊关于gene的富集分析
算法·数据分析·统计分析·计算生物·gene
leory34 分钟前
请详细描述JVM的垃圾回收机制?
android·面试
leory34 分钟前
volatile关键字的作用是什么?它能保证原子性吗?
android·面试
leory40 分钟前
synchronized和ReentrantLock的区别是什么?各自的使用场景?
android·面试
木雷坞1 小时前
AI Agent 接上 MCP 后,我把环境边界重新排了一遍
后端