Я пытаюсь решить эту проблему для интервью. Я смог получить решение O (N) с пространственной полнотой O (N). Я пытаюсь выяснить, есть ли решение с O (1) пространство?Сплит-массив + ve и -ve nums
Вопрос:
Учитывая несортированный массив положительных и отрицательных чисел. Создайте массив альтернативных положительных и отрицательных чисел без, изменяя относительный порядок положительных и отрицательных чисел соответственно.
Входной сигнал:
Первая строка входного файла содержит целое число T, обозначающее количество тестов. Первая строка каждого тестового примера - N, N - размер массива. Вторая строка каждого тестового примера содержит N ввода a [].
Выход:
печати массив альтернативных положительных и отрицательных чисел. Примечание: Решение должно начинаться с положительного числа.
Ограничения:
1 ≤ T ≤ 30 1 ≤ N ≤ 100 -1000 ≤ в [] ≤ 1000
Пример:
Входной
1
9
9 4 -2 -1 5 0 -5 -3 2
Выход
9 -2 4 -1 5 -5 0 -3 2
.
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG {
public static void main (String[] args) {
//code
Scanner sn = new Scanner(System.in);
int T = sn.nextInt();
for(int i=0; i<T; i++){
int N = sn.nextInt();
ArrayList<Integer> arr = new ArrayList<Integer>();
ArrayList<Integer> pv_arr = new ArrayList<Integer>();
ArrayList<Integer> ne_arr = new ArrayList<Integer>();
for(int j=0; j<N; j++){
int num = sn.nextInt();
if(num<0){
ne_arr.add(num);
}else{
pv_arr.add(num);
}
}
int maxLen = Math.max(pv_arr.size(), ne_arr.size());
for(int k = 0; k < maxLen; k++){
if(k < pv_arr.size()){
System.out.print(pv_arr.get(k) + " ");
}
if(k < ne_arr.size()){
System.out.print(ne_arr.get(k) + " ");
}
}
System.out.println(" ");
}
}
}
Мой ответ создает два массива положительных & отрицательна и печатает их в качестве альтернативы. Я попытался использовать два указателя (один из положительных значений и один из отрицательных значений). Я не уверен, как решить это с помощью O (N) & O (1) пространства.
Гарантировано ли, что есть решение? То есть существует одинаковое число отрицательных и положительных целых чисел (или самое большее на 1). – luk32
Я не уверен, есть ли решение для O (N) времени и сложности O (1). Я просто пытался найти оптимальный способ решить эту проблему. –
Я имею в виду решение проблемы. То есть Ввод 1 5 1 1 1 1 1 кажется недействительным. – luk32