美文网首页
通过数组逆置进行循环移位

通过数组逆置进行循环移位

作者: 太妃榛果拿铁 | 来源:发表于2018-09-09 11:19 被阅读8次

通过数组逆置进行循环移位

2018-09-09


Question
设计算法将数组a[n]循环左移k位,并要求时间复杂度O(n),只能用一个元素的辅助空间。
循环移位前:
1 2 3 4 5 6 7 8 9 10
循环移动k位:
k=3
循环移位后:
4 5 6 7 8 9 10 1 2 3

Answer

void RRotate(int a[],int k,int n)
{
    Reverse(a,0,k-1);
    Reverse(a,k,n-1);
    Reverse(a,0,n-1);
}
//逆置
void Reverse(int a[],int start,int end) 
{
    int i=0;
    int temp;
    for( i=0 ; i<=(end-start)/2 ; i++)
    {
        temp = a[start+i];
        a[start+i] = a[end-i];
        a[end-i] = temp;
    }
}

Main Idea
先将前k位逆置,再将后length-k位逆置,最后再将整个数组逆置
0.0即得到结果。(:зゝ∠)

相关文章

  • 通过数组逆置进行循环移位

    通过数组逆置进行循环移位 2018-09-09 Question设计算法将数组a[n]循环左移k位,并要求时间复杂...

  • 数组循环移位

  • 数组循环移位

    设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。1、简单的...

  • Leetcode题解之数组

    完美的数组逆置算法 整型数组的逆置算法 最简单的首尾互换: 合理利用泛型 封装类型与基本类型的各自适用范围 旋转数...

  • 第十节:Vue指令:v-for列表循环

    1. 数组的循环 用 v-for 指令根据一组数组的选项列表进行渲染。 1.1 通过索引渲染数组内容 通过数组的索...

  • 单链表逆置

    单链表逆置的思路 a:将单链表储存为数组,然后按照数组的索引逆序进行反转。b:使用3个指针遍历单链表,逐个链接点进...

  • 共享数组原地逆置

    偶然在一本书上看到这样一道题觉得听一意思的就拿来做了一下,题目是这样设置的在已知一维数组A[m+n]中一次存放两个...

  • 22.数组逆置

    #include using namespace std; int main() { int arr[] = { ...

  • 算法面试:链表转置

    //单链表定义 普通的循环的方法。 //单链表逆置实现 递归调用方法

  • 2018-12-02

    Java二维数组的遍历及其转置详解 1.首先我们需要定义一个二维数组 2.对数组进行遍历 3.对数组进行转置操作 ...

网友评论

      本文标题:通过数组逆置进行循环移位

      本文链接:https://www.haomeiwen.com/subject/clbrgftx.html