2023大连思科-英语技术顾问(BDE)笔试技术卷编程题
记录自己第一次手撕代码...
1.html实现以下布局
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<frameset cols="10%,*">
<frame src="frame/left.html">
<frameset rows="10%,*">
<frame src="frame/top.html">
<frame src="frame/main.html">
</frameset>
</frameset>
</html>
2.给定一个包含n个正整数的数组和一个正整数s,找出数组中满足其和sum>=s的长度最小的连续子数组,并返回其长度。如果不存在子数组,则返回0。
public int minSubArrayLen(int target, int[] nums) {
int left = 0;
int sum = 0;
int min = Integer.MAX_VALUE;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
if (sum >= target) {
min = Math.min(min, i - left + 1);
}
while (sum - nums[left] >= target) {
sum -= nums[left++];
min = Math.min(min, i - left + 1);
}
}
if (min == Integer.MAX_VALUE) {
return 0;
}
return min;
}
3.给定一颗n元树,求其最大深度。最大深度是指从根节点到最远叶节点的最长路径的节点数。
方法一:递归
public int maxDepth(Node* root) {
if(root == nullptr)
{
return 0;
}
int depth = 0;
for(int i = 0; i < root->children.size(); i++)
{
depth = max(depth, maxDepth(root->children[i]));
}
return 1 + depth;
}
方法二:层次遍历
public int maxDepth(Node* root) {
int depth = 0;
queue<Node*> que;
if(root != nullptr) que.push(root);
while(!que.empty())
{
depth++;
int size = que.size();
for(int i = 0; i < size; i++)
{
Node* tmpNode = que.front();
que.pop();
for(int i = 0; i < tmpNode->children.size(); i++)
{
if(tmpNode->children[i]) que.push(tmpNode->children[i]);
}
}
}
return depth;
}