Поменять местами в массиве числа с противоположными знаками с учетом перестановки не более одного раза
Поменять местами в одномерном массиве противоположные по знаку элементы (например, 5.7 и -5.7), с учетом перестановки кожного элемента не более одного раза.
первую часть условия выполнил, а вот со второй возникли траблы [4,4,-4,-4,0,8] - исходный [4,-4,4,-4,0,8] - надо или же любое другое изменение, главное чтобы оно больше не повторялось
for(let i =0; i<mass.length; i++){
for(let j=6; j>=0; j--){
if(Math.abs(mass[i])===Math.abs(mass[j])){
mass[i]= mass[i]*-1
mass[j]= mass[j]*-1
break;
}
}
}
console.log(mass)
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Дополнительный массив используется как хранилище признаков "уже двигали"
for(let i =0; i<mass.length-1; i++){
if(temp[i]==0){
for(let j=i+1; i<mass.length; j++){
if(temp[j]==0 && mass[i] == -mass[j]){
mass[i] = -mass[i]
mass[j] = -mass[j]
temp[j] = 1
temp[i] = 1
break;
}
}
}