C,C++面试题
来源:互联网 发布:thewolf软件平台 编辑:程序博客网 时间:2024/03/28 22:12
写一个程序,将一个有N个元素的数组,
循环移动K位,
要求时间复杂度为o(n),空间复杂度度为o(1)!!
答:
#include <iostream>
using namespace std;
void main()
{
int k;
cin >> k; //输入移动距离
const int n = 5;
int a[n] = {1, 2, 3, 4, 5};
int temp[n]; //存储移动后的
for (int i = 0; i < n; ++i)
temp [(i + k) % n] = a[i];
for (int i = 0; i < n; ++i)
cout << temp[i] << ' ';
cout << endl;
}
############################################
############################################
#include <iostream>
using namespace std;
template<typename T>
void reverse(T *a, int l, int h)
{
T t;
int i;
for (i = 0; i < (h - l + 1) / 2; ++i)
{
t = a[l + i];
a[l + i] = a[h - i];
a[h - i] = t;
}
}
int main(void)
{
int i;
char ca[] = "abcdefg";
int n = strlen(ca);
int k = 3;
reverse(ca, 0, n - 1);
reverse(ca, 0, k );
reverse(ca, k + 1, n - 1);
cout << ca << endl;
int ia[] = {1,2,3,4,5,6,7,8};
n = sizeof(ia) / sizeof(ia[0]);
k = 4;
reverse(ia, 0, n - 1);
reverse(ia, 0, k );
reverse(ia, k + 1, n - 1);
for (i = 0; i < n; ++i)
{
cout << ia[i] << ' ';
}
cout << endl;
return 0;
}
- [C/C++]各种面试题
- .C/C++/嵌入式面试题
- [C/C++]各种面试题
- [C/C++]各种面试题
- C++/C面试题集
- C语言面试题
- c/c++面试题
- c/c++面试题
- C/C++面试题
- c/c++面试题
- c面试题
- C语言面试题
- c/c++面试题
- C语言面试题
- C语言面试题
- C/C++ 面试题
- C面试题
- C#.NET面试题
- 很牛的一段代码
- Chinese Battle asp.net battle.net officially open
- .NET Compact Framework 下的3G应用
- 努力+信念
- java socket聊天室
- C,C++面试题
- JSLoader动态加载JS和CSS
- bpel学习笔记(1)
- 用zip压缩保存文件
- PHP如何读写文件
- bpel学习笔记(2)
- bpel学习笔记(3)
- ecache 详解
- 日记090702