数列查询算法
来源:互联网 发布:c 窗体编程视频教程 编辑:程序博客网 时间:2024/05/17 01:13
今日头条的一道面试题:题目描述是这样的
给定两个长度为n的数列A和B,在给定q组查询,每次查询给出两个整数x和y,求满足Ai >= x 且 Bi >= y这样的i的数量
输入:
第一行给定两个整数n和q
第二行给定数列A,包含n个整数
第三行给定数列B,包含n个整数
接下来q行,每行两个整数x和y,意义如上所述
输出:
对于每组查询,输出所求下标数量
样例输入:
3 2
3 2 4
6 5 8
1 1
4 8
输出:
3
1
思路:我认为是先把A,B两个数组先分开,然后满足Ai >= x 的i的位置存到一个list里面,再把满足Bi >= y的i的位置存到一个list里面,最后比较两个list里面相同的i的数量
代码:
import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Series{ public static void queryCondition(int[] a,int[] b,List<String> query){ for (int i = 0; i < query.size(); i++) { int x,y; List<Integer> SmailX = new ArrayList<Integer>(); //用于存放满足Ai >= x的list List<Integer> SmailY = new ArrayList<Integer>(); //用于存放满足Bi >= y的list int count = 0; String[] str = query.get(i).split(" "); x = Integer.valueOf(str[0]); y = Integer.valueOf(str[1]); for (int j = 0; j < a.length; j++) { if(a[j] >= x){ SmailX.add(j); } } for (int j = 0; j < b.length; j++) { if(b[j] >= y){ SmailY.add(j); } } for(Integer e : SmailY) { if(SmailX.contains(e)){ count++; } } System.out.println(count); } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] str = scanner.nextLine().split(" "); //输入n和q,用数组分开 int n = Integer.valueOf(str[0]); int q = Integer.valueOf(str[1]); List<String> query = new ArrayList<String>(); //存放查询条件的list String[] stringArrayA = scanner.nextLine().split(" "); //用数组存放数组A String[] stringArrayB = scanner.nextLine().split(" "); //用数组存放数组B for(int i = 0; i < q; i++){ query.add(scanner.nextLine()); } int[] A = new int[n]; int[] B = new int[n]; for (int i = 0; i < n; i++) { A[i] = Integer.valueOf(stringArrayA[i]); } for (int i = 0; i < n; i++) { B[i] = Integer.valueOf(stringArrayB[i]); } queryCondition(A,B,query); }}
这个是当时匆匆忙忙写的,应该还有其他的办法,欢迎提出,可以关注微信公众号“java从无到有”,我自己新申请的,想逼着自己做点笔记,搞点原创,欢迎大家来和我一起,我们一起讨论,一起进步,我只是一个刚刚起步的小菜鸟
我的公众号二维码:
0 0
- 数列查询算法
- 算法数列
- 查询动态数列
- Java算法——O(n)查询数列中出现超过半数的元素
- Fibonacci数列问题算法
- 一道数列算法
- Fibonacci数列 算法
- Fibonacci 数列算法
- 菲波拉契数列 算法
- 算法-----------数列最小值
- 算法之数列 Fibonacci
- 算法---fbnc数列
- Fibonacci数列-递归算法
- 蓝桥杯 算法训练 数列
- Fibonacci数列算法分析
- 数列极差-贪心算法
- 算法训练-数列
- 【算法题】不等式数列
- 剑指offer-面试题8 旋转数组的最小数字
- Android下的音频通道配置文件mixer_paths.xml
- mysql 各种连接比较
- VMware Workstation cannot connect to the virtual machine 解决方案
- SQL系列之基本操作
- 数列查询算法
- 企业应用的趋势
- usb3.0开发指南:验证软件框架
- struts2 java.lang.ClassNotFoundException: org.apache.commons.lang.xwork.StringUtils
- 2014 蓝桥杯JavaB组省赛 分糖果
- python回溯法求解0-1背包问题的最优值
- ubuntu 必备基本命令
- 浏览器对同一域名进行请求的最大并发连接数
- RF接口测试-post