华为提前批面经 |
您所在的位置:网站首页 › 华为findstar是提前批吗 › 华为提前批面经 |
笔试: 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 |