[TOC] 循环移位法 参考文章: "内容连接" 。主要从 数组,字符串,链表 三种情况下,介绍循环移位的具体实现。这里只梳理一下文章脉络。 数组循环移位 方法一:取模法 这个方法在 Leetcode 189 中已经用过了,作者这里考虑了两种新情况: 如果移位位数 K 是数组长度 len(s) 的倍 ...
分类:
编程语言 时间:
2020-04-04 14:55:02
阅读次数:
82
1、matlab中没有现成的函数,但这个很简单,直接使用下面的程序就行了(参考百度)s=[1 2 3]k=1 %k是移位的位数 s_left=[s(k+1:end) s(1:k)] %左移s_right=[s(end-k+1:end) s(1:end-k)] %右移2017-05-12 记于实验室 ...
分类:
编程语言 时间:
2017-05-12 17:25:23
阅读次数:
404
问题描述:把一个数组中的元素循环右移k位,时间复杂度严格为O(n),不能是O(kn). 分析:对于这个问题很容易想到的一种方法是依次循环右移,但是这样的话时间复杂度是O(kn),明显不符合题目要求,在之前的博客中,我写的对于字符串的移位问题,可以借助里面的方法三步反转法。 第一步:根据n和k求出分界 ...
分类:
编程语言 时间:
2016-07-01 18:21:27
阅读次数:
187
题目描述:设计一个算法,把一个含有N个元素的数组循环右移K位,要求算法的时间复杂度位O(Log2N)O(Log_2N),且只允许使用两个附加变量。
什么意思呢,就是说如果输入序列为:abcd1234,右移2位即变为34abcd12。唯一的要求就是使用两个附加变量。
其实这道题编程珠玑上面也出现过,书中给出的一种符合题意的解法是巧妙地进行翻转。以把abcd1234右移4位为例:第一步:翻转1234...
分类:
编程语言 时间:
2015-08-14 10:00:05
阅读次数:
131
题目: 设计一个算法,将一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),只允许使用两个附加变量思路: 如abcd1234: 逆序排列abcd:abcd1234---》dcba1234 逆序排列1234:dcba1234---》dcba4321 逆序所有 :dc...
分类:
编程语言 时间:
2015-08-10 22:02:25
阅读次数:
141
题目:
把一个含有N个元素的额数组循环右移K位,要求时间复杂度O(N),且只允许使用两个附加变量。
解法一:O(N^2)
每次将数组中的元素右移移位,循环K次。当K>N时,右移K位和右移K%N位是一样的。
MyShift(int a[],int N,int K)
{
K%=N;
while(K--)
{
int t=a[N-1];...
分类:
编程语言 时间:
2015-04-28 09:49:29
阅读次数:
131
楼主又来~(≧▽≦)/~啦啦啦,科研,就是要这么一鼓作气。额,其实楼主的老本行是推公式啊,做这些算法题,其实是楼主在偷懒。额,话不多说了,快请出我们今天的主角吧!还是关于数组的-数组循环移位。下面我们来看下题目的要求。题目要求:设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N)O(N),且只允许使用两个附加变量。题目解答我们来自己给个例子,来帮助自己思考。如数组为[1, 2...
分类:
编程语言 时间:
2015-04-13 19:03:04
阅读次数:
199
题目:把一个含有N个元素的字符串右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。
例子:
字符串为:abcd1234,右移4位,结果变为:1234abcd
思路:
移动前跟移动后是有两段的顺序是不变的,所以可以把这两段看成两个整体
右移K位的过程就是把数组的两部分交换一下。
交换的过程:(1)逆序排列第一部分
(2)逆序排列第二部分
(3)再全部逆序!
...
分类:
编程语言 时间:
2015-01-25 18:16:08
阅读次数:
210
数组循环移位要求:设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。不合题意的解法如下:我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234→4abcd123→34abcd12→234abcd1→1234abcd。版本...
分类:
编程语言 时间:
2014-12-25 23:25:17
阅读次数:
199
这是一个很经典的题目,题目的大概意思是这样的: 有一个存储字符串的数组,需要按照要求循环移动数组中的字符,例如,数组中存储字符 abcd1234,循环右移4位,之后,会得到这样一个字符数组 1234abcd,当然,左移也是同样的解法 想想这个问题不是很难,顺序依次移动就可以了,这样做的话,时间复杂度是O(n2)量级的,那么,有没有更快的方法呢? 首先,我们需要对数组的...
分类:
编程语言 时间:
2014-10-16 17:33:32
阅读次数:
204