Упражнения на Java: найдите медиану числа внутри окна

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) при каждом перемещении в заданном массиве промежуточных чисел с повторяющимися числами. Переместите окно из начала массива.

Оцените статью
nanomode.ru
Добавить комментарий