Java Basic: Упражнение-173 с решением
Напишите программу на Java, чтобы найти медианное значение числа внутри окна (размер k) при каждом перемещении в заданном массиве целых чисел с повторяющиеся номера. Переместите окно из начала массива.
{| 1, 2, 3 |, 4, 5, 6, 7, 8, 8} -> Возврат медианы 2
{1, | 2, 3, 4 |, 5, 6, 7, 8, 8} -> Возврат медианы 3
{1, 2, | 3, 4, 5 |, 6, 7, 8, 8} -> Возврат медианы 4
{1, 2, 3, | 4, 5, 6 |, 7, 8, 8} -> Возврат медианы 5
{1, 2, 3, 4, | 5, 6, 7 |, 8, 8} -> Возврат медианы 6
{1, 2, 3, 4, 5, | 6, 7, 8 |, 8} -> Возврат медианы 7
{1, 2, 3, 4, 5, 6, | 7, 8, 8 |} -> Возврат медианы 8
Массив результатов {2, 3, 4, 5, 6, 7 , 8}
Пример решения:
Код Java:
import java.util. *; import java.util.Arrays; import java.util.LinkedList; public class Solution {public static void main (String [] args) {int [] main_array = {1, 2, 3, 4, 5, 6, 7, 8, 8}; int k = 3; System.out.println (" n Исходный массив:" + Arrays.toString (main_array)); System.out.println (" nЗначение k:" + k); System.out.println (" nResult:"); ArrayList result = median_slide_window (main_array, k); for (int i = 0; i median_slide_window (int [] main_array, int k) {ArrayList result = new ArrayList (); if (k == 0 || main_array.length right_num = new PriorityQueue (k); PriorityQueue left_num = new PriorityQueue (k, Collections.reverseOrder ()); for (int i = 0; i right_num, PriorityQueue left_num) {if (left_num.isEmpty () && right_num.isEmpty ()) {return 0;} while (left_num.size ( ) 1) {right_num.add (left_num.poll ());} return left_num.peek ();} private static void add (PriorityQueue right_num, PriorityQueue left_num, int num) {if (left_num.isEmpty () && right_num.isEmpty ()) {left_num.add (num); return;} else {if (num right_num, PriorityQueue left_num, int num) {if (num
Пример вывода:
Исходный массив: [1, 2, 3, 4, 5, 6, 7, 8, 8] Значение k: 3 Результат: 2345678
Изображение Презентация:
Блок-схема:
Редактор кода Java:
Компания: Google
Предыдущий: Напишите программу на Java, чтобы получить количество элементов в заданном массиве целых чисел, которые меньше целого числа другого заданного массива целые числа.
Далее: Напишите программу на Java, чтобы найти максимальное число внутри числа в окне (размер k) при каждом перемещении в заданном массиве промежуточных чисел с повторяющимися числами. Переместите окно из начала массива.