描述:对于两个数组,第一个数组可能包含可重复的整数。返回的数组的长度与第二个数组相同。对于第二个数组中的每个元素a,第一个数组中有多少个<=a的数字。样例 1:输入:nums = [3, 2, 4, 3, 5, 1],sub = [2, 4]输出:[2, 5]解释:<=2的数字[1,2],<=4的数字[1,2,3,3,4]样例 2:输入:nums = [3, 1, 2, 3, 3, 1],sub = [1,3]输出:[2,6]解释:<=1的数字[1,1],<=3的数字[1,1,2,3,3,3]
解题思路1:
1.分别遍历两个数组
2.计算第一个数组中有多少个<=a的数字。
3.将计算出的元素个数放入数组。
解题代码:
public class Solution {
public static void main(String[] args) {
int [] nums = new int[] {3, 2, 4, 3, 5, 1};
int [] sub = new int [] {2, 4};
SimpleQueries(nums,sub);
}
public static int[] SimpleQueries(int[] nums, int [] sub) {
//scores = new int[][] {{90,80,70},{90,90,90},{60,60,60}};
//int[] num = new int[] {};
int b =sub.length;
int [] num = new int[b];
//先遍历第二个数组中的元素
for (int i = 0; i < sub.length; i++) {
int n = sub[i];
int a = 0;
//遍历第一个数组中的元素
for (int j = 0; j < nums.length; j++) {
//比较元素的大小,如果第二个数组中的元素大于第一个数组,那么元素个数+1
if (n>=nums[j]) {
a++;
}
}
for (int k = 0; k < num.length; k++) {
num[i]=a;
}
}
return num;
}
}
解题思路2:二分查找法;
