Я пытался написать метод, который принимает массив в качестве аргумента и возвращает непрерывный подмассив наименьшей суммы. Я попробовал несколько входных данных, и когда я пытался arr[] = {10, -5, 2, -1, 7, -3}, я должен получить результат: {-5, 2, -1}< /code> и сумма равна -4, но я получил результат {-5}. Я не знаю, сможет ли кто-нибудь мне помочь. Спасибо!
Вот мой код:
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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Android Adb, как отправлять непрерывный входной сигнал с задержкой 0 с
Anonymous » » в форуме Android - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-