Я пытался написать метод, который принимает массив в качестве ARG и возвращает наименьшую сумму смежного Subarray. Я попробовал несколько ввода и когда я пытался arr [] = {10, -5, 2, -1, 7, -3} , а вывод, который я должен получить, {-5, 2, -1} и сумма --4 , но я получил выход {-5} . Я не знаю, может ли кто -нибудь мне помочь. Спасибо!
вот мой код: < /p>
public static int[] smallestSumSubarray(int arr[]) {
if(arr == null || arr.length == 0) {
return new int[] {}; //Return an empty array if input is empty
}
int minSum = Integer.MAX_VALUE;
int start = 0;
int end = 0;
//iterate through the array starting from the second element
for(int i = 0; i < arr.length; i++) {
int crntSum = 0;
for(int j = i; j < arr.length; j++) {
crntSum += arr[j];
if(crntSum < minSum) {
minSum = crntSum;
start = i;
end = j;
}
}
}
return Arrays.copyOfRange(arr, start, end + 1);
}
public static void main(String[] arg) {
int arr[] = {10, -5, 2, -1, 7, -3};
int[] smallestSubarray = smallestSumSubarray(arr);
System.out.print("The smallest subarray is: ");
for(int num : smallestSubarray) {
System.out.print(num + " ");
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-subarray
Самая маленькая сумма смежного субрай ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение