C++笔试面试真题回顾与知识点总结

问答题目

问题1 molloc和new的区别

http://blog.jobbole.com/102002/

问题2 浅拷贝和深拷贝

问题3 野指针是如何产生的?

问题4 讲述一下virtual

问题5 C++中什么类型的成员变量只能在构造函数的初始化列表中进行

问题6Static的作用?

问题7宏和枚举的区别?

问题8程序的编译执行过程?

问题9堆和栈的区别?

问题10struct和typedef struct的区别?

问题11Struct和Class的区别?

问题12 简述回调函数

问题13Linux中进程分类?

问题14 简述回调函数

问题15位图格式?

算法题目

题目1 求最大公约数和最小公倍数

题目2 斐波那契数列

题目3 快速排序

题目4 堆排序

题目5 归并排序

题目6 插入排序

题目7 二叉排序树

题目8 平衡二叉树

题目9 广度优先搜索( BFS )

题目10 深度优先搜索(DFS)

编程题目

题目1 操作序列(2017网易)

小明有一个长度为n的整数序列a_1,...,a_n,然后考虑在一个空序列b上进行n次以下操作:
1 将a_i放入b序列的末尾
2 逆置b序列
小明需要你计算出操作n次之后的b序列
输入描述
输入包括两行,第一行包括一个整数n(2≤n≤ 2*10 ^ 5),即序列的长度。第二行包括n个整数a_i(1≤n≤ 10 ^ 9),即序列a中的每个整数,以空格分割。
输出描述
在一行中输出操作n次之后的b序列,以空格分割,行末无空格
示例1
4
1 2 3 4
输出
4 2 1 3
参考
//别被迷惑了,其实不需要逆序,直接从后向前间隔一个输出,然后没有输出的顺序输出即可
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	long long n;
	while (cin >> n)
	{

		vector<int> array(n);
		for (long long i = 0; i < n; ++i)
			cin >> array[i];

		if (n == 1)//只有一个的话直接输出就行,感谢"...石头..."的纠正.
		{
			cout << array[0] << endl;
			return 0;
		}

		if (n % 2 == 0)//我这里区分了一下奇数和偶数,更好处理
		{
			for (long long i = n - 1; i >= 0; i -= 2)
			{
				cout << array[i] << " ";
			}
			cout << array[0];
			for (long long i = 2; i < n - 1; i += 2)
				cout << " " << array[i];
		}
		else
		{
			for (long long i = n - 1; i >= 0; i -= 2)
			{
				cout << array[i] << " ";
			}
			cout << array[1];
			for (long long i = 3; i < n - 1; i += 2)
				cout << " " << array[i];
		}
		cout << endl;
	}
	return 0;
}
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaveBobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值