今日头条用户喜好值javaAC代码

package jianzhioffer;
import java.util.*;
class ac {
	
    int value=0;
    int num=0;
    public ac(int num,int value) {
    	this.value=value;
    	this.num=num;
    }

}
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n= sc.nextInt();
            ac[] a= new ac[n];
            for(int i=0;i<n;i++){
            	int k=sc.nextInt();
            	a[i]=new ac(i+1, k);}
        	Arrays.sort(a,new Comparator<ac>() { @Override public int compare(ac o1, ac o2) {
					// TODO Auto-generated method stub
					return Integer.compare(o1.value, o2.value);
				}
			});
        	int q=sc.nextInt();
        	for(int i=0;i<q;i++){
        		int l=sc.nextInt();
        		int r=sc.nextInt();
        		int k=sc.nextInt();
        		int left=0;
        		int right=a.length-1;
        		while(left<=right){
        			int mid=(right-left)/2+left;
        			if(a[mid].value<=k)left=mid+1;
        			else right=mid-1;
        			
        		}
        		int rindex=right;left=0;
        		while(left<=right){
        			int mid=(right-left)/2+left;
        			if(a[mid].value>=k)right=mid-1;
        			else left=mid+1;
        			
        		}
        		right=rindex;
        		int res=0;
        		while(left<=right){
        			if(a[left].num>=l && a[left].num<=r)res++;left++;
        		}
        		System.out.println(res);
        	}
        }
    }
}

#字节跳动#
全部评论
先排序,然后两次二分搜索找到喜好直为k的区间,最后统计即可
点赞 回复 分享
发布于 2017-09-10 23:03
你这个排序必须是稳定的吧?
点赞 回复 分享
发布于 2017-09-11 09:13
大佬,能稍微说一下你的思路吗?
点赞 回复 分享
发布于 2017-09-10 22:12

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务