Я видел, что этот вопрос задавался ранее, вот ссылка: Apple и Orange HackerRank . Я должен сказать вам, что мои сомнения не похожи на этого человека, просто я написал код, который отлично работает для большинства тестовых случаев, а для некоторых тоже не срабатывает.
Я проверил свой код и уверен, что мой код работает нормально.
Ссылка на вопрос: Вопрос Apple & Orange HackerRank
Постановка задачи
Учитывая дом человека, длина дома которого находится между переменными s и t , и у нас есть два дерева, одно - яблоко, другое - оранжевое. Поскольку нам дали некоторое расстояние от упавшего яблока и апельсинов соответственно, нам нужно найти те яблоки и апельсины, расстояние которых находится между s and t
, или я должен сказать, что они попадают в дом человека xyz.
Формат ввода
- Первая строка содержит два целых числа через пробел, обозначающих соответствующие значения s и t.
- Вторая строка содержит два целых числа через пробел, обозначающие соответствующие значения a и b.
- Третья строка содержит два целых числа через пробел, обозначающих соответствующие значения m и n.
- Четвертая строка содержит разделенные пробелом целые числа, обозначающие соответствующие расстояния, на которые каждое яблоко падает от точки а.
- Пятая строка содержит разделенные пробелом целые числа, обозначающие соответствующие расстояния, на которые каждый апельсин падает от точки b.
Код
static void countApplesAndOranges(int s, int t, int a, int b, int[] apples, int[] oranges) {
int appleSum=0, orangeSum=0, appleCount=0, orangeCount=0;
for(int i : apples){
appleSum = Math.abs(a+i);
if(appleSum>=s && appleSum<=t)
appleCount++;
}
for(int j : oranges){
orangeSum = Math.abs(b+j);
if(orangeSum>=s && orangeSum<=t)
orangeCount++;
}
System.out.print(appleCount + "\n" + orangeCount);
}
Это мой кусок кода , который отлично работает в большинстве тестовых случаев , но этот случай на самом деле запутался в аду. Я на самом деле записываю суть одного из неудачных тестовых случаев и дам вам ссылку на то же самое, если вам это удастся, ребята.
Пройденный тестовый пример {1}
7 11
5 15
3 2
-2 2 1
5 -6
Пройденный тестовый кейс {2}
7 10
4 12
3 3
2 3 -4
3 -2 -4
Неудачный тестовый пример
37455 87275
35609 89610
73201 77971
19736 19374 -68796 0 -68800 -80005 -88383 -8147 73241 -33256 20227 0
41620 30182 -95883 -88718 93989 44405 66495 87717 100000 -99845 -63634
98450 -63318 23501 -39150 22335 4955 -98587 -13608 -95388 -41752 4959
22375 -20025 -72101 -90667 -41569 94758 -26725 -53444 -8783 -81879
57041 23682 -60064 -23505 2850 96653 18487 -6644 -90710 71994 21513
36066 -65894 -9897 -86990 -97347 89784 88447 93133 12662 61685 -22914
-39075 -96807 -80465 -53820 36851 -51794 -11967 36658 -75592 22004 -961
66645 -93123 -65326 81871 -21785 -48242 -63552 32509 51078 -37656
-14966 4017 -58411 9346 13544 -63028 -93738 93924 68463 55032 -10046
87907 -20967 78972 85338 19584 45460 84382 -34690 -82301 14093 -60802
4170 -90955 92241 -34932 68913 -22262 49469 -45729 7942 65753 17354
-28647 93058 -43811 21411 8543 -44799 -71815 -40743 60445 -66946 -85090
-96873 97385 -15317 54454 -21021 -60256 -41301 -98896 -97184 63098
-60230 41376 42273 45807 58041 54260 21196 -85191 85267 -28305 30220
-76826 82999 72627 7{-truncated-}
Ожидаемый результат
89610
19582
Есть еще кое-что, и ссылка здесь: Входные данные тестового примера
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: На самом деле я не спрашивал о решении, мой код работает, но я не знаю, почему эта логика не работает для таких входов.
Любая помощь будет принята с благодарностью! Спасибо :)
редактирует
Я попытался использовать long
вместо int
, в случае более высокого значения, такого как значение, которое есть в неудачном тестовом примере, но опять-таки он потерпел неудачу!
long appleSum=0, orangeSum=0, appleCount=0, orangeCount=0;