闪击笔试题

选择题

ping命令不涉及什么协议?
A:DNS
B: TCP
C: ARP
D: ICMP

B,ping基于ICMP协议,解析路由会用到ARP和DNS

a、b、c三人参加学科竞赛,每个学科按一二三名次给x、y、z分,已知a得22分,b和c得9分,b是数学第一名,问你能推出什么结果?

条件不足

已知完全二叉树节点768,求叶节点多少个

偶数(n1 = 1):n0= n/2;
奇数(n1 = 0):n0=(n+1)/2;

编程题

两数之和

思路:如下
闪击笔试题_第1张图片

 vector<int> twoSum(vector<int>& nums, int target) {
 	unordered_map<int, int> mp;
 	for(int j = 0; j < nums.size();j++){
 		auto it = mp.find(target - nums[j];
 		if( it != mp.end())
 			return {it->second, j};
 		mp[nums[j]] = j;
 	} 
 	return {};
 }

栈排序
题目:
对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。

https://blog.csdn.net/jiaomubai/article/details/102319275
解法:

从主栈中依次压入辅助栈,直到主栈顶部元素不是比辅助栈顶元素大时(保持辅助栈元素从上到下降序),
将主栈该元素先拿出来,然后将辅助栈元素不断出栈到主栈直到辅助栈顶部元素比该元素小,
然后继续从主栈压入辅助栈进行循环

//stack1为主栈,stack2为辅助栈
stack<int> sort(stack<int> stack1){
    stack<int> stack2;
    while (!stack1.empty()){
		int temp = stack1.top();
		stack1.pop();
		//如果辅助栈不为空且当前元素比辅助栈栈顶元素小,则将辅助栈中元素弹出压入主栈中
		while (!stack2.empty() && stack2.top() > temp){
		    stack1.push(stack2.top());
		    stack2.pop();
		}
		//如果辅助栈为空或者当前元素比辅助栈栈顶元素大,则将当前元素直接压入辅助栈中
		stack2.push(temp);
    }
    return stack2;
}

你可能感兴趣的:(数据结构与算法,算法,数据结构)