《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
int y = stack.top(); stack.pop();
int x = stack.top(); stack.pop();
stack.emplace(x - y);
}else if(tokens[i] == “*”) {
int y = stack.top(); stack.pop();
int x = stack.top(); stack.pop();
stack.emplace(x * y);
}else if(tokens[i] == “/”) {
int y = stack.top(); stack.pop();
int x = stack.top(); stack.pop();
stack.emplace(x / y);
}else {
stack.emplace(stoi(tokens[i]));
}
}
return stack.top();
}
};
==========================================================================
题目:
给定一个整数数组
asteroids,表示在同一行的小行星。
对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。
找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。
示例:
输入:asteroids = [5,10,-5]
输出:[5,10]
解释:10 和 -5 碰撞后只剩下 10 。 5 和 10 永远不会发生碰撞。
提示:
-
2 <= asteroids.length <= 104 -
-1000 <= asteroids[i] <= 1000 -
asteroids[i] != 0
思路:
用动态数组模拟栈
入栈:当栈为空
or当前数为正数or栈中元素为负数
出栈:
- 栈不为空
and栈顶正数and栈顶小于当前负数的绝对值(第三个条件包含了当前数为负数的条件)
- 栈不为空
and当前数为负数and栈顶 等于 当前数
class Solution {
public:
vector asteroidCollision(vector& asteroids) {
vector res;
for(int i : asteroids) {
while(!res.empty() && res.back() > 0 && res.back() < -i) {
res.pop_back();
}
if(!res.empty() && i < 0 && res.back() == -i) {
res.pop_back();
} else if(res.empty() || i > 0 || res.back() < 0) {
res.push_back(i);
}
}
return res;
}
};
=========================================================================
题目:
请根据每日
气温列表temperatures,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。
示例:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
提示:
-
1 <= temperatures.length <= 105 -
30 <= temperatures[i] <= 100
思路:
单调栈(递减)
栈中存储数组下标(方便计算天数)
while :如果栈顶小于当前数,相当于遇到高温天气,更新低温天气
res的值
class Solution {
public:
vector dailyTemperatures(vector& temperatures) {
int n = temperatures.size();
vector res(n);
stack sta;
for(int i = 0; i < n; i++) {
while(!sta.empty() && temperatures[sta.top()] < temperatures[i]) {
res[sta.top()] = i - sta.top();
sta.pop();
}
sta.push(i);
}
return res;
}
};
==================================================================================
题目:
给定非负整数数组
heights,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
示例:
输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10
提示:
-
1 <= heights.length <=105 -
0 <= heights[i] <= 104
思路:
单调栈(递增)
class Solution {
public:
int largestRectangleArea(vector& heights) {
//单调递增的栈,栈里元素存储数组下标
stack sta;
//-1为哨兵,计算宽度时使用
sta.push(-1);
int maxArea = 0;
for(int i = 0; i < heights.size(); i++) {
//遇到小于栈顶元素时,计算栈顶元素的面积
while(sta.top() != -1 && heights[sta.top()] > heights[i]) {
int height = heights[sta.top()]; sta.pop();
int width = i - sta.top() - 1;
maxArea = max(maxArea, height * width);
}
sta.push(i);
}
//当有剩余元素时,即里面都是单调递增元素,将右边添加一个0即可计算面积,0的下标–>heights.size()
while(sta.top() != -1) {
int height = heights[sta.top()]; sta.pop();
//计算的又边界为0的下标 heights.size()
int width = heights.size() - sta.top() - 1;
maxArea = max(maxArea, height * width);
}
return maxArea;
}
};
=================================================================================
题目:
给定一个由 0 和 1 组成的矩阵 matrix ,找出只包含 1 的最大矩形,并返回其面积。
注意:此题 matrix 输入格式为一维 01 字符串数组。
示例:
输入:matrix = [“10100”,“10111”,“11111”,“10010”]
输出:6
解释:最大矩形如上图所示。
提示:
-
rows == matrix.length -
cols == matrix[0].length -
0 <= row, cols <= 200 -
matrix[i][j]为'0'或'1'
思路:
将这题转换成上一题 剑指 Offer II 039. 直方图最大矩形面积(困难) 的扩展
因为最大矩阵一定是以矩阵的某一行为底边的,所以可以遍历各行,将每行的数组带入上题代码得到该行最大矩阵
第一行等效为
[1, 0, 1, 0, 0]
第二行等效为
[2, 0, 2, 1, 1]
第三行等效为
[3, 1, 3, 2, 2]
第四行等效为
[4, 0, 0, 3, 0]
class Solution {
public:
int maximalRectangle(vector& matrix) {
if(matrix.size() == 0) return 0;
vector height(matrix[0].size());
int maxArea = 0;
for(int i = 0; i < matrix.size(); i++) {
for(int j = 0; j < matrix[0].size(); j++) {
if(matrix[i][j] == ‘0’) {
//表示这列无矩阵
height[j] = 0;
}else {
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。




关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
r镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
[外链图片转存中…(img-8RwAx7MO-1714702262726)]
[外链图片转存中…(img-97LrFwUU-1714702262726)]
[外链图片转存中…(img-t9UcO6UX-1714702262727)]
[外链图片转存中…(img-54drJnEf-1714702262727)]
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
本文解析了一线大厂Java面试中的典型问题,涉及栈操作、小行星碰撞规则、动态数组模拟、矩阵最大矩形面积计算,以及Docker和Kubernetes的使用。还提供了学习资源链接。


1705

被折叠的 条评论
为什么被折叠?



