美文网首页
有序数组中目标元素出现的次数

有序数组中目标元素出现的次数

作者: 无聊到学习 | 来源:发表于2020-10-14 22:22 被阅读0次

1.题目:

有序数组中目标元素出现的次数,要求时间复杂度为O(logn)。

2.思想

数组前提是有序的,因此主要用到了二分查找的思想,找到目标值后,继续向左或者向右查找第一次出现的位置或者最后一次出现的位置,直到没有再找到目标值,那么最后一次记录的索引值就是我们要找的位置。那为什么不在找到目标值后从中间开始往左右两边遍历计数,这样也可以确定目标值的个数呀。但是如果目标值的个数很多,这样岂不是就转换成顺序查找了吗,复杂度为O(n),因此失去了二分查找的意义。

3.代码

public class 有序数组中某元素的个数logN {

    public static void main(String[] args) {
        int[]arr={1,1,3,4,5,5,5,6,7};
        int target=3;
        int left=find(arr,target,0);
        int right=find(arr,target,1);
        if(left==-1){
            System.out.println(0);
        }else{
            System.out.println(right-left+1);
        }
    }
    public static int find(int[]arr,int target,int flag){
        if(arr.length==0)return -1;
        int left=0;
        int right=arr.length-1;
        int last=-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(arr[mid]>target){
                right=mid-1;
            }else if(arr[mid]<target){
                left=mid+1;
            }else {
                last=mid;
                if(flag==0){//找第一个值等于target的索引
                    right=mid-1;//在左边继续查找
                }else if(flag==1){//找最后一个值等于target的索引
                    left=mid+1;//在右边继续查找
                }
            }
        }
        return last;
    }

}

4.参考

从有序数组中找出某个数出现的次数

相关文章

  • 有序数组中目标元素出现的次数

    1.题目: 有序数组中目标元素出现的次数,要求时间复杂度为O(logn)。 2.思想 数组前提是有序的,因此主要用...

  • 计算数组中每个元素出现的次数

    计算数组中每个元素出现的次数

  • Swift 数组

    数组的简单介绍 数组是一串有序的由相同类型元素构成的集合 数组中的元素是有序的,可以重复出现 在Swift中数组(...

  • 每日一题-1287. 有序数组中出现次数超过25%的元素

    题目 给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。 请...

  • Swift--原生集合类型

    数组 字典 Set集合 数组 数组:是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。...

  • leetcode两个数组的交集

    题目描述 解题思路 将nums1数组中的元素和元素出现的次数传入map集合中,元素作为集合中的键,出现的次数作为集...

  • 2018-01-18

    数组中每个元素出现的次数 返回的obj中的属性名是数组中的每个元素值,属性值是数组中相同的元素的个数。

  • swift基础语法(六)——数组

    介绍 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 Swift中...

  • swift3.0-数组和字典

    (一) 数组 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 sw...

  • 双指针解法类型

    A1.删除有序数组中的重复项 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次...

网友评论

      本文标题:有序数组中目标元素出现的次数

      本文链接:https://www.haomeiwen.com/subject/odsgpktx.html