int[] source = { 5, -3, 6, -7, -6, 1, 8, -4, 0, 0 };
int toRightIdx = 0;
int toLeftIdx = source.Length - 1;
int leftIdx = 0;
int rightIdx = source.Length - 1;
int[] result = new int[source.Length];

while (true)
{
    if (toLeftIdx >= 0)
    {
        int left = source[toRightIdx++];
        if (left < 0) result[leftIdx++] = left;

        int right = source[toLeftIdx--];
        if (right > 0) result[rightIdx--] = right;
    }
    else
    {
        result[rightIdx--] = 0;
    }
    if (leftIdx > rightIdx) break;
}

应该算是最好的解法了吧:P

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案