当前位置: 首页 > 知识库问答 >
问题:

如何有效地旋转数组?

杜弘光
2023-03-14

给定一个由n整数和一个数字组成的数组,d,对该数组执行左旋转。然后将更新后的数组打印为单行空格分隔的整数。

示例输入:

static void Main(String[] args)
{
    string[] arr_temp = Console.ReadLine().Split(' ');
    int n = Int32.Parse(arr_temp[0]);
    int d = Int32.Parse(arr_temp[1]);

    string[] arr = Console.ReadLine().Split(' ');
    string[] ans = new string[n];

    for (int i = 0; i < n; ++i)
    {
        ans[(i + n - d) % n] = arr[i];
    }

    for (int j = 0; j < n; ++j)
    {
        Console.Write(ans[j] + " ");
    }
}

如何使用更少的内存来解决这个问题?

共有1个答案

商柏
2023-03-14

在大多数情况下,这将使用更少的内存,因为第二个数组只和移位一样大。

public static void Main(string[] args)
{
    int[] n = { 1, 2, 3, 4, 5 };
    LeftShiftArray(n, 4);
    Console.WriteLine(String.Join(",", n));
}

public static void LeftShiftArray<T>(T[] arr, int shift)
{
    shift = shift % arr.Length;
    T[] buffer = new T[shift];
    Array.Copy(arr, buffer, shift);
    Array.Copy(arr, shift, arr, 0, arr.Length - shift);
    Array.Copy(buffer, 0, arr, arr.Length - shift, shift);
}
 类似资料:
  • 所以我试图生成一个数组,其中填充了唯一的随机整数,我发现用arraylist来实现这一点是最有效的方法。 现在我试着使用但我不太确定括号里应该放什么,也不确定这是否真的能起作用。有没有其他转换方法,因为我不能简单地通过。

  • 问题内容: 我具有以下功能,可以将PDF转换为一系列图像(每页一个图像): 这可以很好地工作,性能并没有那么快,但这并不重要。我的问题与内存消耗有关。假设我要转换一个较长的PDF(Apple的10-Q,长达51页): 到最后一页的末尾,内存使用量一直增加到〜11GB! 我还注意到一些注意事项: 当我通过Instruments运行此程序时,它出乎意料地显示没有泄漏。两个大记忆猪是和。它们似乎没有在两

  • 问题内容: 我目前在一个项目中,需要执行一些步骤,以处理旧版Matlab代码(使用Matlab引擎),其余部分则使用Python(numpy)进行处理。 我注意到,将结果从Matlab转换为numpy的速度似乎非常慢。 这是一些示例代码,用于从另一个ndarray,列表和mlarray创建具有1000个元素的ndarray: 这需要以下时间: 转换所需时间约为列表转换的100倍。 有什么办法可以加

  • 主要内容:JOGL FPSAnimator 类,JOGL 旋转示例在 JOGL 中,对象可以沿三个轴中的任何一个向任何方向旋转。要旋转对象,您需要按照以下步骤操作: 删除对象的先前状态以清除视图。为此,您需要使用以下方法清除颜色和深度缓冲区: 现在,在 glLoadIntensity() 方法的帮助下重置项目矩阵 调用 GLMatrixFunc 接口的 glRotatef() 方法。 JOGL FPSAnimator 类 FPSAnimator 类是 Anima

  • 问题内容: 我想-使用Python和Qt4– 旋转QPushButton(或至少它的文本),使其可以垂直站立。我在网上看过一些文档,但是我从中没多大意义- 它在C语言中,而且我是C文盲。 根据我的阅读,需要重新实现paintEvent()处理程序,实例化和旋转QPainter()。但是我不知道怎么为我只需要的一个QString或QPushButton做到这一点。我假设QPaintEvent会像信号

  • 问题内容: 因此,目标是将阵列中的元素正确旋转一次。举个例子; 如果, 则将成为 这是我所拥有的: 但是,这无法说明何时大于数组的长度。我读到我应该将更大的存储在另一个Array中,但是看到变量是不确定的,因此我不确定这是最好的解决方案。提前致谢。 问题答案: 在代码中添加一个模数组长度: 您还应该创建一个要复制到的新值,以免覆盖以后需要的值。