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

总结

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

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

相关推荐
鬼蛟6 分钟前
springcloud
后端·spring·spring cloud
lhbian9 分钟前
PHP vs Java vs Go:编程语言终极对比
java·spring boot·后端·kafka·linq
掘金者阿豪10 分钟前
实测4大AI做PPT神器:千问 vs Kimi vs 豆包 vs 扣子,谁才是最强生产力?(附完整对比)
后端
地平线开发者14 分钟前
目标检测的 Anchor-Free 和 NMS 到底是什么?
算法·自动驾驶
海寻山30 分钟前
Java枚举(Enum):基础语法+高级用法+实战场景+面试避坑
java·开发语言·面试
北顾笙98033 分钟前
day24-数据结构力扣
数据结构·算法·leetcode
石榴树下的七彩鱼1 小时前
身份证 OCR 识别 API 接入详解(Python / Java 示例)
java·开发语言·人工智能·后端·python·ocr·api
智者知已应修善业1 小时前
【51单片机独立按键控制往复流水灯启停】2023-6-13
c++·经验分享·笔记·算法·51单片机
马士兵教育1 小时前
AI工作岗位的就业分层?
开发语言·人工智能·学习·面试·职场和发展
Ruihong1 小时前
你的 Vue 3 useAttrs(),VuReact 会编译成什么样的 React?
vue.js·react.js·面试