题目: 给定一个字符串S[0...N-1],要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a','b'移动到字符串的尾部,得到新的字符串"cdefab":即字符串循环左移k位。 算法要求:时间复杂度O(N),空间复杂度为O(1) *循环左移k位等价于循环右移N-k位 ...
分类:
其他好文 时间:
2016-04-23 16:24:51
阅读次数:
297
一。字符串循环移位问题; 给定一个字符串S[0...N-1],要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”向左移动2位得到“cdefab”。 循环左移n+k位和k位的结果是一样的; 循环右移k位相当于循环左移n-k位。 算法要求:时间复杂度O(n), 空间复杂度O(1). 不能采用 ...
分类:
其他好文 时间:
2016-04-22 23:38:11
阅读次数:
219
void Reverse(vector&nums,int p,int q)
{
for(;p<q;p++,q--)
{
int temp=nums[q];
nums[q]=nums[p];
nums[p]=temp;
}
}
void RightShift(vector nums,int k)
{
int n=nums.size();
k%=n;
Reverse(nums...
分类:
编程语言 时间:
2016-04-16 11:02:46
阅读次数:
186
实现字符串右循环移位函数,例如“abcdef”循环右移2位就是“cdefab”。#include<stdio.h>
#include<stdlib.h>
voidleft_move(chararr[],intk)
{
inti=0;
intlen=strlen(arr);
for(i=0;i<k;i++)
{
chartmp=arr[0];
intj=0;
for(j=0;j<len-1;j++)
..
分类:
其他好文 时间:
2016-03-10 01:56:30
阅读次数:
247
逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR 、 SAL 、SAR、ROL、ROR、RCL、RCR * OPR 不能为立即数 * 不影响标志位 SF ZF PF 根据运算结果设置 逻辑及算术左移SHL SAL逻辑右移SHR 算术右移SAR 循环左移 ROL 循环右移
分类:
其他好文 时间:
2016-02-06 01:44:06
阅读次数:
222
Q:把一个含有 N 个元素的数组循环右移 K 位,要求时间复杂度为 O (N),且只允许使用两个附加变量。开始的思路:1.若k=整数倍N, 完成;k大于N,k=N%k;k小于N,开始处理。2.tmp1保存取出的元素a[k];a[0]放在k;tmp2保存a[2k], tmp1放入2k;tmp1保存a[...
分类:
编程语言 时间:
2015-10-23 18:48:56
阅读次数:
239
旋转数组起始就是数组元素的循环左移或者循环右移。例如:{3,4,5,1,2}为{1,2,3,4,5}的一个旋转数组。旋转数组是在非降序数组的基础上得到的,所以数组原本应该是有序的。有序数组到旋转数组如果真的利用循环左移或者循环右移来实现旋转数组,那么将有大量的元素要移动,所以一个好的方法要尽量的减少...
分类:
编程语言 时间:
2015-08-30 17:26:56
阅读次数:
205
代码:
#include
#include
#include
using namespace std;
int a[105];
int main()
{
int n,m;
int i,j;
while(scanf("%d%d",&n,&m)==2)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int r=m%n;
if...
分类:
编程语言 时间:
2015-08-29 23:27:35
阅读次数:
414
用四种方法实现了将数组元素循环右移k个位置,相关的解释作为注释放在代码里面了。
package movearrayelement;
import java.util.BitSet;
public class MoveArrayElement {
/**
* 每次把数组中所有元素移动一个位置,移动k轮
* @param array
* @param k
*/
public ...
分类:
编程语言 时间:
2015-08-26 22:26:59
阅读次数:
179