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;
    }
}

总结

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

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

相关推荐
无心水9 分钟前
【任务调度:框架】10、2026最新!分布式任务调度选型决策树:再也不纠结选哪个
人工智能·分布式·算法·决策树·机器学习·架构·2025博客之星
语戚19 分钟前
从 JVM 底层拆解:i++、++i、i+=1、i=i+1 的实现逻辑与坑点
java·开发语言·jvm·面试·自增·指令·虚拟机
我头发还没掉光~19 分钟前
【C++写详细总结①】从for循环到算法初步
数据结构·c++·算法
StackNoOverflow23 分钟前
Spring核心知识精讲:IoC容器、Bean作用域生命周期与AOP(第二部分)
java·后端·spring
野生技术架构师26 分钟前
Java面试精选:数据库 + 数据结构 +JVM+ 网络 +JAVA+ 分布式
java·数据库·面试
q1cheng27 分钟前
(1)分组统计 + 筛选、(2)自连接去重和(3)子查询方式
面试
张元清29 分钟前
每个 React 开发者都需要的 10 个浏览器 API Hooks
前端·javascript·面试
甲鱼92931 分钟前
FreeSWITCH 对接 SIP 中继踩坑记录
后端·程序员
【数据删除】34836 分钟前
计算机复试学习笔记 Day41
笔记·学习·算法
上海锟联科技36 分钟前
什么是DAS分布式光纤声波传感系统?原理与应用解析
数据结构·分布式·算法·分布式光纤传感