2026.05.21征图日记19(没事干,刷力扣)

上午就把App用release模式装在了mentor手机上,主要是debug模式每次启动App都要去网上请求资源,App会一直卡在启动界面好一会。还有就是把启动界面的文字改了一下,之后就都在摸鱼了,顺便还刷了一道昨天剩下的力扣~

下午就在配置webai的环境,真麻烦啊。感觉啥事都没干。
允许自己摸鱼~

下午快下班了去找mentor问我之后有什么工作,因为后续肯定会接触到webAi,所以他们需要帮我把环境配好,很多依赖都在公司的SVN上面,还没有给我开权限。实际上我已经跑起来了,可能数据库里面的内容没有。我看mentor的Svn文件夹里面有几百个G的数据

明天再说吧

柱状图中最大的矩形(单调栈)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
stack<int> stk; // 存下标 递增栈 用于找左右第一个严格小于栈顶元素的元素
int ans = 0;
// 首尾元素都加一个零
heights.insert(heights.begin(), 0);
heights.push_back(0);
for (int i = 0; i < heights.size(); ++i) {
// while循环完之后i位置肯定可以入栈并且不破坏递增
while (!stk.empty() && heights[i] < heights[stk.top()]) {
int cur = stk.top();
stk.pop();
// cur左边能扩展到的最远
int left = stk.top() + 1;
// cur右边能扩展到的最远
int right = i - 1;
ans = max(ans, (right - left + 1) * heights[cur]);
}
stk.push(i); // 始终记住存的是下标
}
return ans;
}
};

最长公共前缀的长度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public:
int longestCommonPrefix(vector<int>& arr1, vector<int>& arr2) {
int ans = 0;
unordered_set<int> set;
for (int i = 0; i < arr1.size(); ++i) {
int num = arr1[i];
while (num) {
set.insert(num);
num /= 10;
}
}
for (int i = 0; i < arr2.size(); ++i) {
int num = arr2[i];
while (num) {
if (set.count(num) && num > ans)
ans = num;
num /= 10;
}
}
return ans == 0 ? 0 : to_string(ans).size();
}
};

// 一个整数的前缀可以通过不断去掉末位数字得到,对应的操作是不断对 10 做整数除法。例如整数 1234 的所有前缀为 1234,123,12,1。
// 我们先遍历 arr1,对其中每个元素不断除以 10,将得到的所有前缀存入哈希表 set
// 随后遍历 arr2,对其中每个元素同样不断除以 10 枚举前缀。若当前前缀在 set 中出现过,说明 arr1和 arr2中存在一对数拥有该公共前缀,用它更新最大公共前缀值 ans
// 最终 ans 的十进制位数即为答案。若 ans 为 0,说明不存在公共前缀,返回 0

今日工作内容

  1. 将缺陷面积测量从掩膜像素积分改为深度像素积分方案。发现旧代码漏乘分辨率缩放因子(depthW×depthH)/(maskW×maskH)导致面积随downscale参数变化,改为掩膜像素双线性投票到深度像素桶后以深度像素为单位积分面积
  2. 限定面积统计范围为bbox内像素与画布渲染口径一致。
  3. 调整 SplashScreen 两行文字:副标题从 FOCUSIGHT 改为 Focusight Vision,统一两行字号为 h3,缩小与 Logo 间距,添加 textAlign 居中。同步更新 en/zh i18n 文件。
  4. 尝试配置webAi前后端环境

下阶段计划

  1. 熟悉WebAi前后端代码,梳理代码逻辑