Поменять местами в массиве числа с противоположными знаками с учетом перестановки не более одного раза

Поменять местами в одномерном массиве противоположные по знаку элементы (например, 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;
          } 
       }
    }
→ Ссылка