9.20 58同城笔试
单选15,多选5,编程题三个
第一道61%,第二道100%,第三道边界条件没处理好没过
● 第一道找两个数组的交集,[[1,2],[4,6]]和[[2,3],[5,6]]的交集为[[2,2],[5,6]]。思路:用一个额外的数据记录,遍历第一个若是范围内的就加1,第二个数组也同理。最后数组中值为2的就是交集。
● 第二道将一个字符串切割成两个非空字符串,左边a的数量加上右边b的数量的最大值。思路:先统计所有a,b的数量,边遍历字符串边统计此时ab的数量,切割i后面的位置,maxNum = Math.max(maxNum, aCur + bTotal - bCur);
● 第三道在一个无限长的数轴上,1,2,3表示从1走到2恰好走3步有几种方式。思路:使用动态规划,dp[i][j]表示间隔为i走j步有几种方式,dp[i][j] = Math.max(dp[i][j], dp[i + 1][j - 1] + dp[i - 1][j - 1]); 因为这里用到了i+1所以创建的时候int[][] dp = new int[dis + 3][k + 1];是距离加3,遍历的时候也要为i < dp.length - 1,否则会数组越界。
#你都收到了哪些公司的感谢信?##我的实习求职记录##互联网没坑了,还能去哪里?##如何判断面试是否凉了##在找工作求抱抱#