# 单项选择(20*2分)
会一大半,一小半不会,问题有数据库、操作系统(epoll、select、poll、页面置换算法)这些都不咋会、linux指令有点不会(top指令),java基础(见下面)、网络(tcp、ARP什么的)等等
## 有个类似这个的题,我只能想起来一部分了,还有没有大佬能想起来告诉我一下
public class Main { private static int var = 100; public static void main(String[] args) { Main main = new Main(); main.var++; Main.var++; System.out.println(Main.var); } }
# 多项选择(10*2分)
好多不会的,有点懵
# 编程题(20*2分),均为核心代码模式,均100%
## 第一题
一个存储不重复元素的数组height,数组长度为n,找到下标0<i<j<l<n,使得height[i] < height[j] < height[l]或height[i] > height[j] > height[l]。
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param height int整型一维数组 舞蹈员身高的一维数组 * @return int整型 */ private Stack<Integer> stack; int res; public int TeamNums (int[] height) { // write code here res = 0; stack = new Stack<>(); for (int i = 0; i < height.length; i++) { stack.push(height[i]); countNums(height, i + 1); stack.pop(); } for (int i = 0; i < height.length; i++) { stack.push(height[i]); countNumsDown(height, i + 1); stack.pop(); } return res; } private void countNumsDown(int[] height, int index) { if (stack.size() == 3 && ++res >= 0) return; if (index == height.length) return; for (int i = index; i < height.length; i++) { if (height[i] < stack.peek()) { stack.push(height[i]); countNumsDown(height, i + 1); stack.pop(); } } } private void countNums(int[] height, int index) { if (stack.size() == 3 && ++res >= 0) return; if (index == height.length) return; for (int i = index; i < height.length; i++) { if (height[i] > stack.peek()) { stack.push(height[i]); countNums(height, i + 1); stack.pop(); } } } }## 第二题
给一个mxn的矩阵,对其收集资源,输出最多能够收集到的资源
收集方式:
1. 可以从任意位置开始收集
2. 资源为0则不能收集
3. 每次收集完资源后可以继续向上/下/左/右继续收集
4. 每个资源最多只能收集一次
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param grid int整型二维数组 为n*m 的二维数组 * @return int整型 */ int[][] visited; int res; int finalRes; public int getMaximumResource (int[][] grid) { int m = grid.length; int n = grid[0].length; visited = new int[m][n]; res = 0; finalRes = Integer.MIN_VALUE; // write code here for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (grid[i][j] != 0) findResource(grid, i, j); } } return finalRes; } private void findResource(int[][] grid, int x, int y) { if (x < 0 || y < 0 || x >= grid.length || y >= grid[0].length || grid[x][y] == 0 || visited[x][y] == 1) return; visited[x][y] = 1; res += grid[x][y]; finalRes = Math.max(res, finalRes); findResource(grid, x + 1, y); findResource(grid, x - 1, y); findResource(grid, x, y + 1); findResource(grid, x, y - 1); res -= grid[x][y]; visited[x][y] = 0; } }
全部评论
(1) 回帖