У меня проблема с программированием. У меня есть два массива. nums1 = {1,7,11} и nums2 = {2,4,6}. Я должен выяснить наименьшую сумму, берущую 1 число из каждого массива до k-го времени. В моем примере k = 3. Таким образом, наименьшие суммы: {1 + 2 = 3}, {1 + 4 = 5}, {1 + 6 = 7}. Массивы всегда в отсортированном порядке.
Я использовал Treemap для решения этой проблемы.
Вот и мы:
public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) {
Map<Integer,int[]> value=new TreeMap<>();
int[]arr_hold=new int[2];
int []solve_arr=new int[k];
List<int[]> solve = new ArrayList<>();
ArrayList<Integer>add_sum= new ArrayList<>();
int sum=0;
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
sum=nums1[i]+nums2[j];
arr_hold[0]=nums1[i];
arr_hold[1]=nums2[j];
value.put(sum,arr_hold);
}
}
return solve;
}
Проблемы:
1.При печати System.out.println (значение);
Выход:
{3=[I@75412c2f, 5=[I@75412c2f, 7=[I@75412c2f, 9=[I@75412c2f, 11=[I@75412c2f, 13=[I@75412c2f, 15=[I@75412c2f, 17=[I@75412c2f}
Теперь, почему значения массива arr_hold не отображаются должным образом?
Поскольку я беру Treemap, он уже показывает мне вывод в отсортированном формате. Поэтому, если я возьму 1, 2, 3 значение из древовидной карты, моя проблема будет решена. Но ограничение здесь
value.get() method
Элемент поиска зависит от значения ключа. Так что, если я возьму цикл для получения 3 самых маленьких значений из древовидной карты, это даст мне нулевой вывод, поскольку ключи не совпадают.
for(int k1=0;k1<k;k1++){
System.out.println(value.get(k1));
}
Выход: ноль
null
null
Как мне решить мою проблему на моем пути ?