40 分单选,20 分多选。计算机网络、操作系统、SQL相关的题目。
另外 40 分就是分别 20 分一道的编程题。编程题都是 LeetCode 那样的,已经给了程序框架,指定了返回值,不需要自己写输入输出。
总时长 2 个小时
编程题1
悉尼歌剧院准备举办一场舞蹈演出.
于是教练去挑选舞蹈演员
他让 n 名舞蹈演员站成一排。每个演员都有一个 独一无二 的身高.
每 3 个演员可以组成一个小组,分组规则如下:
从队伍中选出位置分别为的 j,k,l 的 3 名演员,他们的身高分别为分别为 height[j], height[k], height[l].
由于教练是个强迫症,所以舞蹈小队需要满足: height[j] < height[k] < height[l] 或者 height[j] > height[k] > height[l],
其中 0 <= j < k < l < n.
请你返回按上述条件可以组建的舞蹈小队。每个演员都可以是多个舞蹈小队的一部分。
于是教练去挑选舞蹈演员
他让 n 名舞蹈演员站成一排。每个演员都有一个 独一无二 的身高.
每 3 个演员可以组成一个小组,分组规则如下:
从队伍中选出位置分别为的 j,k,l 的 3 名演员,他们的身高分别为分别为 height[j], height[k], height[l].
由于教练是个强迫症,所以舞蹈小队需要满足: height[j] < height[k] < height[l] 或者 height[j] > height[k] > height[l],
其中 0 <= j < k < l < n.
请你返回按上述条件可以组建的舞蹈小队。每个演员都可以是多个舞蹈小队的一部分。
输入
[1,5,3,2,4]
输出
3
说明
我们可以组建三个舞蹈小队 (1,3,4)、(1,2,4)、(5,3,2)
AC参考代码
public int TeamNums (int[] height) { int count = 0; for(int j = 0; j < height.length; j++){ for(int k = j+1; k < height.length; k++){ for(int l = k+1; l < height.length; l++){ if(height[j]>height[k] && height[k]>height[l]) count++; if(height[j]<height[k] && height[k]<height[l]) count++; } } } return count; }
编程题2
某某公司开发了一款生存类游戏,游戏地图大小用 m * n 的网格 grid 进行了标注。每一个地图单元格都有生存所需的资源;如果该单元格没有生存资源,那么就是 0,玩家每到地图一个单元可以获取对应位置的资源,用以生存储备。
- 为了使生存储备最大化,玩家需要按以下规则来收集资源:
- 每当玩家进入一个地图单元,就会收集该单元格中的所有资源。
- 玩家每次可以从当前位置向上下左右四个方向走。
- 每个单元格只能被收集(进入)一次。
- 不得收集(进入)资源数目为 0 的单元格。(没有收获还耗费体力)
- 玩家可以从地图中 任意一个 有资源的单元格出发或者是停止。
输入
[[0,6,0],[5,8,7],[0,9,0]]
输出
24
说明
收集路线为 7->8->9
输入
[[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]
输出
28
说明
收集路线为 1->2->3->4->5->6->7
参考代码
public static int getMaximumResource (int[][] grid) { for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length; j++) { if(grid[i][j] != 0) backtrack(grid,i,j,0); } } return max; } static int max = 0; public void backtrack(int[][] grid,int i,int j,int sum){ if(grid[i][j] == 0) return; sum += grid[i][j]; int temp = grid[i][j]; grid[i][j] = 0; max = Math.max(max,sum); if(i < grid.length-1) backtrack(grid,i+1,j,sum); if(i > 0) backtrack(grid,i-1,j,sum); if(j < grid[0].length-1)backtrack(grid,i,j+1,sum); if(j > 0) backtrack(grid,i,j-1,sum); grid[i][j] = temp; }
全部评论
(2) 回帖