Java 题解 | #最大体重的牛#
最大体重的牛
https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param op string字符串一维数组
* @param vals int整型二维数组
* @return int整型一维数组
*/
public int[] max_weight_cow (String[] op, int[][] vals) {
// write code here
int[] res = new int[op.length];
Stack<Integer> s = new Stack<>();
int[] v = new int[op.length];
int size = 0;
for (int i = 0; i < op.length; i++) {
if (op[i].equals("push")) {
s.push(vals[i][1]);
v[size] = vals[i][1];
size++;
Arrays.sort(v, 0, size);
res[i] = -1;
} else if (op[i].equals("pop")) {
int idx = 0;
for (int j = 0; j < size; j++) {
if (v[j] == s.peek()) {
idx = j;
break;
}
}
System.arraycopy(v, idx + 1, v, idx, size - idx - 1);
size--;
s.pop();
res[i] = -1;
} else if (op[i].equals("getMax")) {
res[i] = v[size - 1];
} else if (op[i].equals("top")) {
res[i] = s.peek();
} else {
res[i] = -1;
}
}
return res;
}
}
这段代码使用的编程语言是Java。
主要考察的知识点包括:
- 数组和列表的使用:使用数组和列表存储操作和数值。
- 栈的实现和操作:使用栈来模拟压栈和弹栈操作。
- 排序算法的应用:使用排序算法对列表进行排序,以获取最大值。
- 条件语句和循环语句的运用:根据不同的操作类型执行相应的操作。
- 数组的复制和移动:使用 System.arraycopy 方法来移动数组元素。
代码的文字解释大纲如下:
- 定义一个 Solution 类,其中包含一个 max_weight_cow 方法,用于执行一系列操作并返回结果数组。
- 在方法中,创建一个栈对象和大小相同的数组来存储元素值。
- 遍历操作数组,根据不同的操作类型执行相应的操作。如果是 "push" 操作:将值压入栈对象和数组末尾。增加数组大小,将数组排序,设置结果为 -1。如果是 "pop" 操作:找到栈顶元素在数组中的索引。使用 System.arraycopy 方法将栈顶元素之后的元素左移一位。减小数组大小,弹出栈顶元素,设置结果为 -1。如果是 "getMax" 操作:将数组的最后一个元素设置为结果。如果是 "top" 操作:将栈顶元素设置为结果。其他情况下,将结果设置为 -1。
- 返回结果数组。
海康威视公司福利 1139人发布
查看9道真题和解析