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

总结

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

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

相关推荐
Memory_荒年2 分钟前
Dubbo面试通关秘籍:从“小白”到“源码大神”的终极指南
java·后端·dubbo
IT大师兄吖4 分钟前
flux-2-Klein-BFS-换头换脸工作流 懒人整合包
算法·宽度优先
PFinal社区_南丞10 分钟前
Go 1.26 go fix 详解:18 个分析器一键现代化代码
后端
波哥学开发12 分钟前
深入解析 BEV 图像色彩调整与伪彩色映射:从直方图统计到着色器实现
算法·图形学
beiju12 分钟前
Agent Loop:AI Agent 的最小实现结构
后端·agent
野生技术架构师13 分钟前
Spring Boot 4 与 Spring Framework 7 全面解析:新特性、升级要点与实战指南
spring boot·后端·spring
Java水解14 分钟前
阿里国际Java社招面经分享(附赠阿里Java面试题)
java·后端·面试
Giant10014 分钟前
深度玩转 Cursor Rules:让 AI 生成的代码 100% 符合团队规范
前端·面试
kyriewen17 分钟前
自定义事件:让代码之间也能“悄悄对话”
前端·javascript·面试
Nyarlathotep011321 分钟前
CyclicBarrier基础和原理
java·后端