华为提前批面经

您所在的位置:网站首页 华为findstar是提前批吗 华为提前批面经

华为提前批面经

2024-06-08 10:51| 来源: 网络整理| 查看: 265

笔试:

AC>=1就可以

一面:

主要问和项目相关的知识,手撕代码easy难度,数组去重和排序。

二面:

还是先问一些项目的知识,然后问我对抗学习,强化学习,深度学习,我当时懵了,因为我一开始投的算法后来改投C++开发的,主要就是问它们的实现原理和相互之间的区别,问我机器学习这一块厉不厉害这些,我只能说我学过,emmmmm。不过还好都懂些,都能回答出来一些。然后问我Tensorflow一些细节,并不能全答出来。之后再问我C++,问lambda和STL,这些也算基础知识,都能回答出来,讲道理面试最开心的就是C++的互问互答环节了。

手撕代码真的有点恶心,不是BFS也不是动态规划,更不是贪心,是个螺旋数组,当时我差点写不下去了,赶紧猛喝一口水,接个深呼吸。

题目给三个参数,m,x,y  m是螺旋数组的宽度,(x,y)是螺旋数组内给定点的坐标,用1-9九个数字循环填充,求该点的值

举例:

1 2 3 4 5

7 8 9 1 6

6 6 7 2 7

5 5 4 3 8

4 3 2 1 9

x=3,y=1,res=5

刚开始以为可以动态规划,结果浪费了10分钟,其实应该这样解的,上代码:

// 1->9 //1 2 3 4 //3 4 5 5 //2 7 6 6 //1 9 8 7 //m是螺旋矩阵的宽度,求(x,y)坐标处的值 1-9填充 #include #include using namespace std; class solution { public: int getMin(int x,int y) { x = x < 0 ? -x : x; y = y < 0 ? -y : y; x = x > y ? x : y; return x; } int getPoint(int m, int x, int y) { int r = m - 1;//定义外圈半径m-1 int mid = (m-1)>>1;//定位圆心 int circles = mid - getMin(x - mid, y - mid);//圈数目 int res = 0; for (int i=0;i < circles;i++) { res += r * 4;//加圆 r -= 2; } //定边 关键要知道圆的四条边 if (circles == x) res += (y - circles + 1); else if (m - 1 - circles == y) res += (r + x - circles + 1); else if (m - 1 - circles == x) res += (r * 2 + m - 1 - circles - y + 1); else res += (r * 3 + m - 1 - circles - x + 1); res = res%9==0 ? 9 : res % 9; return res; } }; int main() { solution s = solution(); //int res = s.getPoint(5, 2, 3); int res = s.getPoint(5, 2, 1); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3