第一次读取数组时可以解决吗?

是的,您可以。今天,您将在Hacker Rank的Algorithms部分的实现部分中研究Apple和Oranges问题。 问题的描述,您将在随后遇到。 阅读完说明后,请自己考虑解决问题。 在您提出解决方案之后,请仔细阅读我的代码。 检查解决方案是否相互匹配。 如果没有,请与我分享。 没有解决方案是唯一的,每种解决方案都可以帮助我们提高逻辑技能。

苹果和橙

山姆的房子有一棵苹果树和一棵桔子树,可产出大量水果。 在下图中,红色区域表示他的房子,这里是起点,是终点。 苹果树在他家的左边,橙树在它的右边。 您可以假设树位于单个点上,其中苹果树位于,橙树位于。

当水果从树上掉落时,它沿x轴降落d个距离其原产树的距离。 d的负值表示水果在树的左侧下降d个单位, d的正值表示水果在树的右侧下降d个单位。

哪里,

s山姆住所位置起点。
t山姆的房屋所在地的终点。
苹果树位置。
b橙树的位置。
m从树上掉下来的苹果的数量。
苹果每个苹果从树上掉落的距离。
n从树上掉下来的橘子的数量。
橘子每个橘子从树上掉落的距离。

给定m个苹果和n个橙子的d值,您能确定在Sam的房子上掉下多少个苹果和橙子(即[s,t]包含范围)? 将落在山姆家中的苹果数量作为第一行输出,然后将落在山姆家中的橙子数量作为第二行输出。

输入格式

第一行包含两个空格分隔的整数,分别表示st的
第二行包含两个以空格分隔的整数,分别表示ab的值。
第三行包含两个以空格分隔的整数,分别表示mn的值。
第四行包含m个以空格分隔的整数,分别表示每个苹果从点a落下的距离。
第五行包含n个以空格分隔的整数,分别表示每个橙色点从点b落下的距离。

输出格式

在两个不同的行上打印两个整数:

  1. 第一个整数:落在山姆家中的苹果数量。
  2. 第二个整数:落在山姆家中的橘子数量

导入java.io. *;
导入java.util。*;
导入java.text。*;
导入java.math。*;
导入java.util.regex。*;

公共类解决方案{

公共静态void main(String [] args){
Scanner in =新的Scanner(System.in);
int s = in.nextInt();
int = in.nextInt();
int a = in.nextInt();
int b = in.nextInt();
int m = in.nextInt();
int n = in.nextInt();
int n1,n2;
n1 = n2 = 0;
int [] apple = new int [m];
for(int apple_i = 0; apple_i <m; apple_i ++){
apple [apple_i] = in.nextInt();
if(apple [apple_i] + a> = s && apple [apple_i] + a <= t)
n1 + = 1;
}
int [] orange =新的int [n];
for(int orange_i = 0; orange_i <n; orange_i ++){
orange [orange_i] = in.nextInt();
if(orange [orange_i] + b> = s && orange [orange_i] + b <= t)
n2 + = 1;
}
System.out.println(n1);
System.out.println(n2);
}
}

说明

问题要求我们检查水果是否落在房子附近。 如果是这样,那么单个水果的总数即落在房子附近的苹果和橙子的总数。

我们必须记住,房子的左侧有苹果树, 右侧有橙树 我们现在可以说,每当一个苹果掉到树的右边时,它就会靠近房子。 每当橘子掉到树的左边时,它就会靠近房子。

因此,苹果只有正值。 桔子只有负值。 应检查它们是否落入或靠近房屋,以[s,t]包围的区域表示

算法

  • 阅读stabmn
  • 将位于该区域下的苹果(n1)和橙子(n2)的计数值初始化为零。
  • 现在,当您读取数组本身的值时。 您可以检查它是否在该区域内。

if(apple [apple_i] + a> = s && apple [apple_i] + a <= t)
n1 + = 1;

  • 我们正在检查该区域内是否存在该值,如果存在,则增加苹果的数量。

if(orange [orange_i] + b> = s && orange [orange_i] + b <= t)
n2 + = 1;

  • 我们正在检查该区域内是否存在该值,如果存在,则增加橙色的数量。
  • 遍历每个值之后。 打印两个变量的计数。 这是期望的结果。

结论

没有单一的解决方案可以解决问题。 与我分享您的想法。

当我们发布新的编码挑战时您可以关注代码之家以获取更新。 您也可以将遇到任何编码挑战的解决方案或想法发送给我们。 我们很高兴阅读它们。 😉

作者:Akshay Ravindran

您可以访问此挑战以了解有关嵌套循环的更多信息。