阿里笔试3月25号两道题(凉凉)

阿里笔试3月25号

第一题,给定一个数组n,比如
5 10 5 4 4
1  7  8 4 0
3  4  9 0 3
从每一列选择一个数,求出后一列减去前一列的绝对值的和的最小值
比如这里就是5 7 5 4 4,所以输出是5

第二题,给定一个举证,每行是等差数列,但是有部分值是被隐藏了的,数值为0即是被隐藏了,
根据输入的值i,j,判断这个位置上的值是否可以被推导出来,可以就输出,否则输出Unknown


#阿里##阿里巴巴##笔试题目#
全部评论
感觉简单的一批,一提交百分之0
2
送花
回复
分享
发布于 2020-03-25 17:11
第一题dp,第二题模拟,可以参考我的帖子https://www.nowcoder.com/discuss/391536
1
送花
回复
分享
发布于 2020-03-25 17:14
滴滴
校招火热招聘中
官网直投
https://blog.csdn.net/m0_38065572/article/details/105101287写了第一题的思路和代码,写了第二题的部分代码和思路。
1
送花
回复
分享
发布于 2020-03-25 19:00
AC代码 第一题 ```python def solve(n, nums):     pre = [0] * 3     nums = list(zip(nums[0], nums[1], nums[2]))     for i in range(1, n):         cur = [0, 0, 0]         for j in range(3):             cur[j] = min(                 abs(nums[i][j] - nums[i - 1][0]) + pre[0],                 abs(nums[i][j] - nums[i - 1][1]) + pre[1],                 abs(nums[i][j] - nums[i - 1][2]) + pre[2]             )         pre = cur     return min(pre) if __name__ == '__main__':     n = int(input())     res = []     for i in range(3):         res.append(list(map(int, input().split())))     print(solve(n, res)) ```
1
送花
回复
分享
发布于 2020-03-26 02:50
第一题 python def min_abs(arr):     arr = np.array(arr)     n = len(arr[0])     dp = np.zeros((3, n))     for j in range(1, n):         for i in range(3):             tmp = [(abs(arr[i][j] - arr[k][j-1]) + dp[k][j-1]) for k in range(3)]             dp[i][j] = min(tmp)     return int(min(dp[:, -1]))
1
送花
回复
分享
发布于 2020-03-26 05:36
第一题用回溯做但是一直没过,0分处理了😫
点赞
送花
回复
分享
发布于 2020-03-25 17:12
第一题dp #include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; typedef long long ll; ll a[maxn][5]; ll dp[maxn][5]; int main(){     int n;     cin>>n;     for(int i=1;i<=3;i++){         for(int j=1;j<=n;j++){             scanf("%lld",&a[i][j]);         }     }     memset(dp,0x3f3f3f3f,sizeof(dp));     dp[1][1]=0;     dp[1][2]=0;     dp[1][3]=0;     for(int i=2;i<=n;i++){         for(int j=1;j<=3;j++){             dp[i][1]=min(dp[i][1],dp[i-1][j]+abs(a[j][i-1]-a[1][i]));             dp[i][2]=min(dp[i][2],dp[i-1][j]+abs(a[j][i-1]-a[2][i]));             dp[i][3]=min(dp[i][3],dp[i-1][j]+abs(a[j][i-1]-a[3][i]));         }     }     ll ans=min(dp[n][1],min(dp[n][2],dp[n][3]));     cout<<ans<<endl;     return 0; }
点赞
送花
回复
分享
发布于 2020-03-25 17:13
请问过了测试case就是满分了吗。我提交完才发现我第二题有bug。。
点赞
送花
回复
分享
发布于 2020-03-25 17:19
好惨,第一次笔试用牛客。不知道是需要scanner参数,以为会输入进方法,然后本来第一题该a的,全0,还固执的一直想为什么。。
点赞
送花
回复
分享
发布于 2020-03-25 17:25
我也是 dp 提交百分之 50,后面加了取模结果变成 35,现在回想起来 当时代码写的有点乱,可能当时括号写错位了,求大神帮忙看看
点赞
送花
回复
分享
发布于 2020-03-25 17:32
这个笔试是不到100%都算0分,还是过了多少测试用例算多少分?
点赞
送花
回复
分享
发布于 2020-03-25 17:42
第一题对算法岗的同学有优势,知道hmm的都会viterbi算法,一摸一样。。。
点赞
送花
回复
分享
发布于 2020-03-25 21:48
 #阿里# 阿里笔试题在刷题网站上能刷到吗
点赞
送花
回复
分享
发布于 2020-03-26 08:54
第一题54544(3)不是最小的吗,为什么是57544(5)
点赞
送花
回复
分享
发布于 2020-03-26 11:37
第一题a了,但是第二题***了https://blog.csdn.net/m0_38065572/article/details/105101287
点赞
送花
回复
分享
发布于 2020-03-26 16:15
https://blog.csdn.net/qq_27003337/article/details/105100534 第一题AC 第二题复原矩阵,按照 行列行 或者 列行列 都能完全复原出来。
点赞
送花
回复
分享
发布于 2020-03-26 17:21
分享下我的题解:https://www.nowcoder.com/discuss/392312?toCommentId=5677651 全AC
点赞
送花
回复
分享
发布于 2020-03-31 19:03
第一题动态规划,ac算法如下: public class test2 {     static int n,m; static int[][] arr; static int[] dp,next;     public static void main(String[] args) {         Scanner in=new Scanner(System.in);         n=in.nextInt();arr = new int[3][n];         for (int i=0; i<3; i++) {             for (int j=0; j<n; j++) {                 arr[i][j]=in.nextInt();             }         }         dp=new int[]{0, 0, 0};next=new int[]{0, 0, 0};m=0;m=getMinDitance(arr);         System.out.println(minDistance);     }     public static int getMinDitance(int[][] arr) {         for (int i = 1; i < n; i++) {             for (int j = 0; j < 3; j++) {                 next[j] = Math.min(Math.min(Math.abs(arr[j][i] - arr[0][i - 1]) + dp[0],Math.abs(arr[j][i] - arr[1][i - 1]) + dp[1]),Math.abs(arr[j][i] - arr[2][i - 1]) + dp[2]);             }             for (int k = 0; k < 3; k++) {                 dp[k] = next[k];             }         }         return Math.min(Math.min(dp[0], dp[1]), dp[2]);     } }
点赞
送花
回复
分享
发布于 2021-08-08 23:38

相关推荐

#后端# #java# #美团# #测开#自我介绍项目中的亮点&nbsp;说了精度丢失和超卖问题主动更新是什么意思?延迟删除会有什么问题吗用过redis的什么数据结构详细讲解下redis的底层synchronized和lock的区别可重入是什么意思?synchronized底层怎么实现的?lock锁底层呢?线程池的核心参数?执行流程如果创建的是无界队列会有什么影响从操作系统角度来说键入url到访问页面的流程?mysql怎么样尽可能的让多用到索引?三个字段a&nbsp;b&nbsp;c联合索引&nbsp;查询语句里面是&nbsp;a&nbsp;=&nbsp;x&nbsp;,c&nbsp;&amp;gt;&nbsp;x和b&nbsp;=x&nbsp;会触发那个字段的索引?mysql有哪几种存储引擎&nbsp;讲下区别聚簇索引和非聚簇索引的区别?如何尽可能的减少回表查询?可以建立哪几种索引?like&nbsp;%&nbsp;这个&nbsp;%应该放到哪才能用到索引threadlocal底层了解吗你的项目哪里用到了他为什么要用exception和error的区别?你的项目遇到过什么异常&nbsp;怎么解决的?什么时候trycatch什么时候抛异常?redis什么时候用list?redis的几种数据结构分别什么时候用?手撕力扣简单题(思路对的,没写出来)目前就回想起这些忘了录音了应该是寄了,第一次面大厂开发,有些紧张,面试官全程绷着脸,更紧张了,感觉问的不难但是答得确实不好,安心搞测开去咯。有没有大佬知道测开究竟怎么样啊?求告知,求私聊。
点赞 评论 收藏
转发
6 29 评论
分享
牛客网
牛客企业服务