• 数的范围(整数二分)


    给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。

    对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。

    如果数组中不存在该元素,则返回“-1 -1”。

    输入格式

    第一行包含整数n和q,表示数组长度和询问个数。

    第二行包含n个整数(均在1~10000范围内),表示完整数组。

    接下来q行,每行包含一个整数k,表示一个询问元素。

    输出格式

    共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。

    如果数组中不存在该元素,则返回“-1 -1”。

    数据范围

    1n1000001≤n≤100000
    1q100001≤q≤10000
    1k100001≤k≤10000

    输入样例:

    6 3
    1 2 2 3 3 4
    3
    4
    5
    

    输出样例:

    3 4
    5 5
    -1 -1

    可以直接顺序查找,但时间O(n);而二分查找时间O(logn)
    import java.util.Scanner;
    
    public class Main {
             public static void main(String[] args) {
                   Scanner scan=new Scanner(System.in);
                   int n=scan.nextInt();
                   int q=scan.nextInt();
                   int a[]=new int[n];
                   for(int i=0;i<n;i++) a[i]=scan.nextInt();
                   while(q-->0){
                        int num=scan.nextInt();
                        //先找到左边界
                        int l=0,r=n-1;
                        while(l<r){
                             int mid=l+r>>1;
                             if(a[mid]>=num) r=mid;
                             else l=mid+1;
                        }
                        if(a[l]!=num){
                              System.out.println("-1 -1");
                        }
                        //如果有这个数,再找右边界
                        else{
                              System.out.print(l+" ");
                              l=0;r=n-1;
                              while(l<r){
                                     int mid=l+r+1>>1;
                                     if(a[mid]<=num) l=mid;
                                     else r=mid-1;
                              }
                              System.out.println(l);
                        }
                   }
            }
    }
  • 相关阅读:
    J2EE第四周
    J2EE 第三周
    jsf简单入门
    Applrt和Ajax
    hello.java分析
    filter用户例子
    分析LogFilter
    理解session
    关于XML
    企业级应用和互联网应用的区别
  • 原文地址:https://www.cnblogs.com/qdu-lkc/p/12184405.html
Copyright © 2020-2023  润新知