华为实习生2022机考、技术面及主管面试

2023-11-13

第一题:

第一种情况,a坐标比b坐标小,a的坐标更新为b+1
第二种情况,a坐标比b坐标大,直接加1
对于B来说也是一样,按照这个原则来更新坐标,最后返回即可。

第二题:动态规划求地图障碍物的题:

  1. 不同路径https://leetcode.cn/problems/unique-paths/
    二维数组解比较清晰
class Solution {
public:
    int uniquePaths(int m, int n) {
        //确定动规数组
        vector<vector<int>>dp(m,vector<int>(n,1));
        for(int i = 1; i < m; i++){
            for(int j = 1; j < n; j++){
                dp[i][j] = dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};

滚动数组,一数组来维护,

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<int>dp(n,1);
        for(int i = 1; i < m; i++){
            for(int j = 1; j < n; j++){
                dp[j] += dp[j-1];
            }
        }
        return dp.back();
    }
};

在这里插入图片描述
有障碍的:https://leetcode.cn/problems/unique-paths-ii/submissions/

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<int>dp(n);
        dp[0] = (obstacleGrid[0][0] == 0);
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(obstacleGrid[i][j] == 1){
                    dp[j] = 0;
                }else{
                    if(j > 0){
                        dp[j] += dp[j-1];
                    }
                }
            }
        }
        return dp.back();
    }
};

滚动数组稍微麻烦一点
在这里插入图片描述

第三题:树的共同子树

寻找重复子树https://leetcode.cn/problems/find-duplicate-subtrees/

技术面:

项目:

c++析构函数为什么是虚函数

防止内存泄漏,如果父类被继承,析构函数不是虚函数的话,每个子类里都会有析构函数
在这里插入图片描述

#include <iostream>
using namespace std;

class A {
public:
	A() { cout << "A的构造" << endl; }
	~A() { cout << "A的析构" << endl; }
    void Work() {
		cout << "A工作" << endl;
	}
};//基类
 
class B :public A {
public:
	B() { cout << "B的构造" << endl; }
	~B() { cout << "B的析构" << endl; }
	void Work() { cout << "B工作" << endl; }
}; //子类
 
int main()
{
	A* p = new B;  //派生类对象赋给基类指针
	p->Work();//此时调用的是基类的成员函数,因为基类的成员函数覆盖了派生类的同名成员函数
	delete p;
	system("pause");
	return 0;
}

在这里插入图片描述

#include <iostream>
using namespace std;

class A {
public:
	A() { cout << "A的构造" << endl; }
	virtual ~A() { cout << "A的析构" << endl; }
    void Work() {
		cout << "A工作" << endl;
	}
};//基类
 
class B :public A {
public:
	B() { cout << "B的构造" << endl; }
	~B() { cout << "B的析构" << endl; } //在派生类中重写的成员函数可以不加virtual关键字
	void Work() { cout << "B工作" << endl; }
};//派生类
int main()
{
	A* p = new B;  
	p->Work();
	delete p;
	system("pause");
	return 0;
}

在这里插入图片描述

编程题:
接雨水https://leetcode.cn/problems/trapping-rain-water/

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size();
        if (n == 0) {
            return 0;
        }
        vector<int> leftMax(n);
        leftMax[0] = height[0];
        for (int i = 1; i < n; ++i) {
            leftMax[i] = max(leftMax[i - 1], height[i]);
        }

        vector<int> rightMax(n);
        rightMax[n - 1] = height[n - 1];
        for (int i = n - 2; i >= 0; --i) {
            rightMax[i] = max(rightMax[i + 1], height[i]);
        }

        int ans = 0;
        for (int i = 0; i < n; ++i) {
            ans += min(leftMax[i], rightMax[i]) - height[i];
        }
        return ans;
    }
};

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/trapping-rain-water/solution/jie-yu-shui-by-leetcode-solution-tuvc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

时隔数日,已经可以兵不血刃的写出来了

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size();
        vector<int>dp(n,0);
        vector<int>left(n,0);
        vector<int>right(n,0);
        int res = 0;
        left[0] = height[0];
        for(int i = 1; i < n; i++){
            left[i] = max(left[i-1],height[i]);
        }
        right[n-1] = height[n-1];
        for(int i = n-2; i >= 0; i--){
            right[i] = max(right[i+1],height[i]);
        }
        for(int i = 0; i < n; i++){
            res += min(left[i],right[i])-height[i];
        }
        return res;
    }
};

温故而知新

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size();
        vector<int>left(n);
        left[0] = height[0];
        for(int i = 1; i < n; i++){
            left[i] = max(height[i],left[i-1]);
        }
        vector<int>right(n);
        right[n-1] = height[n-1];
        for(int i = n-2; i >=0; i--){
            right[i] = max(right[i+1],height[i]);
        }
        int res = 0;
        for(int i = 0; i < n; i++){
            res += min(right[i],left[i])-height[i];
        }
        return res;
    }
};

在这里插入图片描述

在这里插入图片描述

主管面

项目
我发现就在这个过程中,就不知道怎么介绍,没有什么技术含量
自己的优势
没有什么硬性的奖状啊什么的,都是空口无凭的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为实习生2022机考、技术面及主管面试 的相关文章

随机推荐

  • 关于inet_addr() 函数

    inet addr 将一个字符串格式的ip地址转换成一个uint32 t数字格式 但是需要注意的是 这个函数的返回值在大小端机器上是不同的 例如输入一个 192 168 0 1 的字符串 在内存中的排列 字节从低到高 0xC0 0xA8 0
  • 彻底搞清“SVM”

    文章目录 前言 一 SVM是什么 概述 二 线性SVM 2 1 决策面 方程 2 2 约束条件 以下可以证明 有约束条件和没约束条件的公式是一样的 2 3 线性SVM优化 三 非线性分类 3 1 核函数 总结 前言 分类分析 概念 通过构造
  • 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法 学习
  • maven学习笔记--常用插件(plugins)和目标(goals)

    Maven 的核心其实不做什么实际的事情 除了解析一些 XML 文档 管理生命周期与插件之外 Maven 被设计成将主要的职责委派给一组 Maven 插件 这些插件可以影响 Maven 生命周期 提供对目标的访问 绝大多数 Maven 的动
  • “阿里巴巴官方终极版Java八股文开源,Java学习利器首次揭晓!“

    铜三铁四已经结束了 但还是有很多Java程序员没有找到工作或者成功跳槽 跳槽成功的也只是从一个坑中 跳入另一个坑中 在LZ看来 真正有意义的就业与跳槽 是要进入到一个有绝对潜力的行业或者薪资能实现爆炸式增长的 这件事不容易 但也没有想象的遥
  • Word文档误删怎样恢复?6种实用方法分享给你

    如果您曾经因为没有保存微软Word文档而丢失了所有工作 那么您就会明白疼痛是多么明显 幸运的是 自从在软盘上备份文件的黑暗时代以来 Word已经走过了漫长的道路 如今 如果您丢失了未保存的Word文档 可能仍然有一种方法可以恢复它 这个过程
  • Nodejs学习

    本周我们主要学习了Nodejs相关知识 我也整理了一些相关知识点 首先呢 我们要了解Nodejs不是一门语言 也不是库 不是框架 而是一个JavaScript运行时环境 也就是说它可以解析和执行JavaScript代码 我们知道 浏览器中的
  • ARTS挑战打卡第三周

    ARTS挑战 Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm le
  • 输出具有n个结点的所有不同的二叉树-增强前序遍历形式输出-C++

    我们知道具有n个结点的不同的二叉树的数量是个 这是一个卡塔兰数 那么如何确定这些二叉树是什么样子的呢 下面是博主的思路 我们还知道一个入栈序列的不同出栈序列的数量也是个 于是博主就想 这不是巧了么 既然他们的数量是一样的 而且均不相同 那么
  • unity 控制物体旋转的角度

    using System Collections using System Collections Generic using UnityEngine public class Main MonoBehaviour public float
  • 为“广东数字工商”保驾护航——Apusic应用服务器在广东省工商局的应用

    互联网经济时代 信息技术的变革改变了人们传统的工作 学习 生活和娱乐方式 同时对工商部门的信息化建设提出了挑战 如何利用信息技术改进工商工作 形成新的工作方式 已成为工商系统所关心的问题 数字工商 的提出 便是其中的佐证之一 数字工商 是指
  • 从ping和ping6说起

    1 Windows中的ping ping6 发送ICMP ECHO REQUEST到网络主机 ping6是ICMPv6版的ping实现 t 不停地ping指定的主机 要查看统计信息并继续ping 按Ctl Break 要停止按Ctl C a
  • 垂直广告是什么意思_广告新趋势——内容为王 垂直细分

    广告的变革 曾经的广告投放四大媒介 电视 报纸 杂志 广播 在如今看来早已式微 除了曝光率特别高的综艺节目 影视剧 电影等大屏幕广告以外 其余资源的广告部门或者传统广告代理公司都在纷纷转型 媒体结构变革也意味着广告形式的变革 作为经历传统广
  • 如何配置Git工具

    安装Git 首先确保你已经在计算机上安装了Git 你可以从Git官方网站Git Downloads git scm com 配置用户信息 在命令行终端中 使用下面的命令来配置你的用户名和电子邮件地址 git config global us
  • 如何快速找到paper 提到算法的源码(计算机领域)??

    1 如果该算法有开源的话 首先推荐网站 https paperswithcode com 比较高效 不需要VPN 2 如果算法比较新的话 最好去作者的主页 大佬 去逛一下 3 使用Google 搜索 paper 名字 source code
  • Spring Boot注入Servlet、Filter、Listener 注解方式和使用RegistrationBean二种方式 加源码分析

    目录 Spring Boot 注入Servlet Filter Listener 官方文档 基本介绍 应用实例1 使用注解方式注入 创建 Servlet java 修改Application java 加入 ServletComponent
  • MacBook M1 安装配置conda与python3.9注意事项

    macOS 版本 1 python 3 9 才支持m1 所以需要下载3 9之上的版本 https www python org downloads macos 2 如果需要安装Anaconda 可省略单独安装python anaconda自
  • 苹果CMS V10 后台一键采集豆瓣API获取资料(最新版)

    进入苹果CMS根目录后 找到如下文件 application admin view vod info html 大约在718行左右 照图修改两处位置即可 同时列出关键代码如下 修改后一键采集入库资料示例 相关AJAX请求核心代码如下 aja
  • 元宇宙(四)人机接口

    1 VR AR MR 现在的VR AR MR一定程度上试图解决把虚拟世界 展示 给我们的问题 先不说效果如何 这个接口的也只能提供视觉和听觉信息 虽然视觉和听觉为我们提供了大部分信息量 但其它感知能力 触觉 嗅觉 味觉也虚拟世界能让我们有真
  • 华为实习生2022机考、技术面及主管面试

    第一题 第一种情况 a坐标比b坐标小 a的坐标更新为b 1 第二种情况 a坐标比b坐标大 直接加1 对于B来说也是一样 按照这个原则来更新坐标 最后返回即可 第二题 动态规划求地图障碍物的题 不同路径https leetcode cn pr