选择题
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;
编程题
两数之和
思路:如下
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;
}