2021.08.07 奇安信笔试经验
40分的单选+20分的多选
上述选择题都是一些基础知识+读代码选择题,大家的得分率大概都差不多
40分手撕代码 两道题 都很简单 我的完成度 100% 100% 下面是代码
第一题
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型vector 舞蹈员身高的一维数组 * @return int整型 */ int TeamNums(vector<int>& height) { int n=height.size(), res=0; for(int j=0;j<n;j++) for(int k=j+1;k<n;k++) for(int l=k+1;l<n;l++){ if(height[j]>height[k] && height[k]>height[l]) res++; if(height[j]<height[k] && height[k]<height[l]) res++; } return res; } };第二题
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param grid int整型vector<vector<>> 为n*m 的二维数组 * @return int整型 */ int getMaximumResource(vector<vector<int> >& grid) { int max=0, tmp=0, row=grid.size(), col=0; if(row>0) col=grid[0].size(); for(int i=0;i<row;i++) for(int j=0;j<col;j++){ if(grid[i][j]!=0) tmp=judge(grid, i, j, row, col); if(tmp>max) max=tmp; } return max; } int judge(vector<vector<int> >& grid, int& i, int& j, int& row, int& col){ int left=j-1, right=j+1, up=i-1, down=i+1; int res_current_1=0, res_current_2=0, res_current_3=0, res_current_4=0; if((left<0 || grid[i][left]==0) && (right>=col || grid[i][right]==0) && (up<0 || grid[up][j]==0) && (down>=row || grid[down][j]==0)) return grid[i][j]; int tmp=grid[i][j]; grid[i][j]=0; if(left>=0 && grid[i][left]!=0) res_current_1=tmp+judge(grid, i, left, row, col); if(right<col && grid[i][right]!=0) res_current_2=tmp+judge(grid, i, right, row, col); if(up>=0 && grid[up][j]!=0) res_current_3=tmp+judge(grid, up, j, row, col); if(down<row && grid[down][j]!=0) res_current_4=tmp+judge(grid, down, j, row, col); grid[i][j]=tmp; int max=0; max=res_current_1; if(res_current_2>max) max=res_current_2; if(res_current_3>max) max=res_current_3; if(res_current_4>max) max=res_current_4; return max; } };