在Java编程中,有很多经典的题目可以帮助提高编程技能。以下是一些核心代码刷题的例子:
1.两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中出和为目标值的那两个整数,并返回他们的数组下标。
       
       
         
html自动弹出公告代码
public class TwoSum {
public static void main(String[] args) {
int[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = twoSum(nums, target);
System.out.String(result)); // 输出 [0, 1]
}
public static int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (ainsKey(complement)) {
return new int[]{(complement), i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
       
2.盛最多水的容器:给定 n 个非负整数 a1,a2,...,an,每个数代表一个坐标点 (i, ai)。在坐标内画 n 条垂直线,使得 i 垂直线的两个端点分别为 (i, ai) 和 (i, 0)。出其中的两条线,使得它们与 x 轴构成的容器可以容纳最多的水。
       
       
         
public class MaximalRectangle {
public static void main(String[] args) {
int[] heights = new int[]{2, 1, 5, 0, 6, 2};
int maxArea = largestRectangleArea(heights);
System.out.println(maxArea); // 输出 16
}
public static int largestRectangleArea(int[] heights) {
Stack<Integer> stack = new Stack<>();
int maxArea = 0;
int area = 0;
for (int i = 0; i <= heights.length; i++) { // 后进先出原则计算每个位置的高度和左边界和右边界的面积
while (!pty() && heights[stack.peek()] >= heights[i]) { // 当栈不为空且栈顶元素的高度大于等于当前元素时,弹出栈顶元素并计算面积。
int top = stack.pop(); // 弹出栈顶元素,即左边界的右边界。
area = Math.max(area, heights[top] * (i - stack.size() - 1)); // 计算以栈顶元素为左边界的右边界的面积。
maxArea = Math.max(maxArea, area); // 更新最大面积。
}
stack.push(i); // 将当前位置入栈,作为左边界的右边界。
}
while (!pty()) { // 处理栈中剩余元素。
int top = stack.pop(); // 弹出栈顶元素,即左边界的右边界。
area = Math.max(area, heights[top] * (heights.length - stack.size())); // 计算以栈顶元素为左边界的右边界的面积。
maxArea = Math.max(maxArea, area); // 更新最大面积。
}
return maxArea; // 返回最大面积。
}
}