华为7.13机试

谁能告诉我为啥三道题都是hard啊。。这就是现在华为机试的难度吗😥😥
全部评论
题目大致是啥
2
送花
回复
分享
发布于 2022-07-14 09:06
第二题用优先级队列 因为没有参加笔试 我是按照评论区的题目写的 public int process(int x , int n , int[] nums){         if (x<n){             return 0;         }         if (x==n){             return n*2;         }         PriorityQueue<Integer> heap = new PriorityQueue<>();         for (int num : nums) {             heap.add(num);         }         while (heap.size()!=n){             int num = 0;             while (heap.size()>=0&&num<heap.peek()){                 if (heap.size()==n-1){                     break;                 }                 num+=heap.poll();             }             heap.add(num);         }         HashMap<Integer, Integer> map = new HashMap<>();         while (!heap.isEmpty()){             Integer poll = heap.poll();             map.put(poll,map.getOrDefault(poll,0)+1);         }         int ans = 0;         for (Integer key : map.keySet()) {             if (map.get(key)==1){                 ans++;             }         }         return n*2+ans;     }
2
送花
回复
分享
发布于 2022-07-18 10:33
秋招专场
校招火热招聘中
官网直投
华为笔试可以用本地IDE吗?
1
送花
回复
分享
发布于 2022-07-14 09:31
+1
1
送花
回复
分享
发布于 2022-07-14 09:34
人麻了,G了
1
送花
回复
分享
发布于 2022-07-14 11:30
up哪个地区的呀?我们这边完全没有笔试的消息
1
送花
回复
分享
发布于 2022-07-14 20:23
秋招吗?这么快有笔试了?
1
送花
回复
分享
发布于 2022-07-16 16:11
请问是写完一道题才能看下一道嘛
1
送花
回复
分享
发布于 2022-07-23 22:28
来荣耀呀,我的荣耀内推码: bzctoa
1
送花
回复
分享
发布于 2022-07-29 13:06
感觉是两道medium一道hard。 第一题,A桥承重100吨,B桥80吨,C桥60吨,一列n个卡车按顺序行驶来,在桥上的重量和小于等于承重能通过,驶来的时刻都是整数0-60,过桥时间都要30,问60时刻ABC上各有多重的卡车。n<=1000而已,先调度分配再看重量,而且调度的时候要优先A,其次B,最后C。 第二题,应该是哪里要贪心或者分治?要NlogN或者NsqrtN的。X个1-5的整数,要按顺序分N组,初始代价是2,如果相邻的分组和相同,代价不变,和不同,代价要加1。X,N <= 10^4 例: 3 3 1 1 1 输出 6 ,各一组,和都相等,代价都是2 3 2 2 3 5 输出 4,(2,3)(5)和相等,代价都是2 4 3 1 2 3 4 输出7,(1,2)(3)(4)代价2+2+3 第三题,大暴力,M*N的都是0,1,2的矩阵,M,N<=100,输出从初始位置(s_i,s_j)到最近的1的位置的路径,0能自由通行,1只能从上往下或者从下往上走到,2不能过。同样距离的取行较小、同行再取列较小。 例: 3 4 1 1 (3行4列,初始位置第1行第1列) 0 0 0 0 2 1 0 1 0 0 0 0 输出 1 1 1 2 2 2,(1,1)->(1,2)->(2,2)
4
送花
回复
分享
发布于 2022-07-14 09:40
/*C++版本第一题,模拟*/ #include<iostream> #include<vector> using namespace std; int main() {     const int T =100;     int n;     cin>>n;     vector<int> carweight(n,0);     vector<int> time(n,0);     vector<vector<int>> bridge(T,{100,80,60});     for(int i=0;i<n;i++){         cin>>carweight[i];     }     for(int i=0;i<n;i++){         cin>>time[i];     }     int ni=0;     for(int i=0;i<T&&ni<n;i++) {//时刻点,从0到T,需要调度车辆小于n         //小于61才需要调度,同时车辆到达时间小于等于当前时间i,就去遍历三个桥         if(time[ni]<61&&time[ni] <= i) {             for(int j=0;j<3;j++) {                 if(bridge[i][j]>=carweight[ni]) {                     可以走时,把这座桥之后的30分钟全部减掉,T>90,数组不会溢出,在笔试时可以设置1030                     for(int k=i;k<i+30;k++) {                         bridge[k][j] -= carweight[ni];                     }                     ni++;                     break;                 }             }         }     }     cout<<100-bridge[60][0]<<" "<<80-bridge[60][1]<<" "<<60-bridge[60][2]<<endl;     return 0; }
2
送花
回复
分享
发布于 2022-07-14 23:04
我反正是ji了
点赞
送花
回复
分享
发布于 2022-07-14 09:39
第一题模拟应该就可以,第三题广搜,第二题完全想不到怎么做成log或者根号的
点赞
送花
回复
分享
发布于 2022-07-14 09:42
蹲一个大佬的第二题第三题思路
点赞
送花
回复
分享
发布于 2022-07-14 09:56
投的啥部门呀
点赞
送花
回复
分享
发布于 2022-07-14 13:50
同一套考题,先随机筛掉这一批眉笔🤔 LZ有答案或者解题思路了踢我一脚😚
点赞
送花
回复
分享
发布于 2022-07-14 14:25
深圳
点赞
送花
回复
分享
发布于 2022-07-14 20:26
第一题应该是模拟,只不过时间判定很麻烦吧?第二题是不是二分逼近?看题目意思应该是让每个组的值尽可能相同?可以二分吗?第三题应该就是搜索,只不过条件判定复杂一些?
点赞
送花
回复
分享
发布于 2022-07-14 21:56
//c++第三题 样例都可以过,笔试时,时间不够每做第三题,欢迎指正 vector<vector<int>> ans; void dfs(vector<vector<int>>& MN,vector<vector<bool>>& MNflag,int x3,int x4,vector<int> res) {     int x1 = MN.size()-1;     int x2 = MN[0].size()-1;     MNflag[x3][x4] = true;     res.push_back(x3);     res.push_back(x4);     if(x3 != 0&&MN[x3-1][x4]==1){         res.push_back(x3-1);         res.push_back(x4);         ans.push_back(res);         return;     }     else if(x3 != x1&&MN[x3+1][x4]==1){         res.push_back(x3+1);         res.push_back(x4);         ans.push_back(res);         return;     }     if(x3 != 0&&!MNflag[x3-1][x4]&&MN[x3-1][x4]==0){         dfs(MN,MNflag,x3-1,x4,res);     }     if(x3 != x1&&!MNflag[x3+1][x4]&&MN[x3+1][x4]==0){         dfs(MN,MNflag,x3+1,x4,res);     }     if(x4 != 0&&!MNflag[x3][x4-1]&&MN[x3][x4-1]==0){         dfs(MN,MNflag,x3,x4-1,res);     }     if(x4 != x2&&!MNflag[x3][x4+1]&&MN[x3][x4+1]==0){         dfs(MN,MNflag,x3,x4+1,res);     } }
点赞
送花
回复
分享
发布于 2022-07-14 23:09
这是投的什么岗啊?这么难
点赞
送花
回复
分享
发布于 2022-07-15 09:13

相关推荐

17 161 评论
分享
牛客网
牛客企业服务