2023大连思科-英语技术顾问(BDE)笔试技术卷编程题

记录自己第一次手撕代码...
1.html实现以下布局
image-20230520203722189

<!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;
    }
posted @ 2023-05-14 21:45  4加1等于9  阅读(35)  评论(0编辑  收藏  举报