给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
发布日期:2021-10-06 02:38:31 浏览次数:11 分类:技术文章

本文共 778 字,大约阅读时间需要 2 分钟。

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

你的算法时间复杂度必须是 O(log n) 级别。

如果数组中不存在目标值,返回 [-1, -1]

示例 1:

输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]

示例 2:

输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]

class Solution {

    public int[] searchRange(int[] nums, int target) {

        if(nums == null || nums.length <=0 ){

            return new int[]{-1,-1};

        }

        

        Arrays.sort(nums);

        List list = new ArrayList();

        for(int i = 0;i< nums.length;i++){

            if(nums[i] == target){

                list.add(i);

            }

        }

        if(list == null || list.size() <=0){

            return new int[]{-1,-1};

        }

        if(list.size() == 1){

            int index = (int)list.get(0);

            return new int[]{index, index};

        }else if(list.size()>2){

            return new int[]{(int)list.get(0), (int)list.get(list.size()-1)};

        }else{

            return new int[]{(int)list.get(0), (int)list.get(1)};

        }

    }

}

 

 

 

转载地址:https://blog.csdn.net/luxuiary/article/details/106055108 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。
下一篇:给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月07日 00时53分36秒