Как скоординировать два массива вместе?
у меня есть массив A, который имеет разные n чисел, и еще один пустой массив B с такой же длиной n .
теперь мне нужно перейти к массиву A и в каждом элементе массива A[i] нам нужно
чтобы найти элемент , который ближе всего к A[i] слева и меньше A[i], а индекс найденного элемента мы помещаем в B[i], если такого элемента нет, то B[i]=-1.
например, для массива:
A: 3 7 10 2 10 9 B: -1 0 1 -1 3 3
теперь проблема в том , что мне нужно написать код c для этого, но в O(n)времени и месте O(n) также ,
я не могу придумать, как это сделать с O(n), я могу сделать это только O(n^2)
есть какой-нибудь намек на то, как я могу сделать это всего за O(n) ?
Что я уже пробовал:
B[0]=-1; for(i=1;i<n;i++){ for(j=(i-1);j>=0;j--){ if(A[j] < A[i]){ B[i]=j; break; } if(j=0){ B[i]=-1; } } }
Mohibur Rashid
Ваш вопрос недостаточно ясен. Каков будет результат?
Member 13791698
массив B , например, посмотрите на A[5]=9, я смотрю слева на то , какой элемент меньше 9 , начиная с 10>9 , поэтому мы продолжим, 2<9, поэтому мы нашли элемент, который меньше 9, который равен 2, так что теперь B[5]=3, потому что 3-это индекс 2.. я надеюсь, что это прояснило вопрос!