力扣练习题(2024/4/14)

1接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

  • n == height.length
  • 1 <= n <= 2 * 104
  • 0 <= height[i] <= 105

单调栈思路:

这个解法和之前给出的Python实现思路是相同的,只是采用了C++语言来实现,并且在处理相同高

  1. 找到每个柱子的左右边界:对于每个柱子,我们需要找到它的左右边界,这样才能确定它能够接多少雨水。左边界是指在当前柱子左侧且高度大于等于当前柱子高度的最近柱子,右边界是指在当前柱子右侧且高度大于等于当前柱子高度的最近柱子。

  2. 单调栈处理逻辑 主要就是三种情况
  3. 情况一:当前遍历的元素(柱子)高度小于栈顶元素的高度 height[i] < height[st.top()]
  4. 情况二:当前遍历的元素(柱子)高度等于栈顶元素的高度 height[i] == height[st.top()]
  5. 情况三:当前遍历的元素(柱子)高度大于栈顶元素的高度 height[i] > height[st.top()]
  6. 初始化栈:首先,我们创建了一个栈 st,用来存储数组中柱子的索引。我们从数组的第一个柱子开始遍历,将第一个柱子的索引压入栈中。

  7. 遍历数组:从数组的第二个柱子开始,我们开始遍历整个数组。

  8. 处理高度小于栈顶的情况:如果当前柱子的高度小于等于栈顶柱子的高度,我们将当前柱子的索引压入栈中,因为当前柱子无法形成凹槽,无法接水。

  9. 处理高度等于栈顶的情况:如果当前柱子的高度等于栈顶柱子的高度,我们将栈顶柱子的索引弹出,然后将当前柱子的索引压入栈中。这一步的作用是更新相同高度柱子的位置,因为无论哪个位置的柱子,对最后的结果没有影响。

  10. 处理高度大于栈顶的情况:如果当前柱子的高度大于栈顶柱子的高度,说明可能会形成凹槽,可以接雨水。我们不断弹出栈顶元素,直到栈为空或者当前柱子的高度小于等于栈顶柱子的高度。在弹出栈顶元素的过程中,我们计算相邻柱子之间能够接的雨水量,并累加到结果 sum 中。

  11. 计算雨水量:在每次弹出栈顶元素时,我们计算当前柱子和栈顶元素之间的距离 w,以及能够接到的雨水高度 h,然后将 h * w 累加到结果 sum 中。

  12. 更新栈:处理完当前柱子后,将当前柱子的索引压入栈中,继续处理下一个柱子。

  13. 返回结果:最后,当遍历完整个数组后,返回累加的结果 sum,即为能够接到的总雨水量。

代码:

class Solution {
public:
    int trap(vector<int>& height) {
        // 如果柱子数量小于等于2,则无法形成凹槽,无法接雨水,直接返回0
        if (height.size() <= 2) return 0;
        
        int sum = 0; // 存储能接到的总雨水量
        stack<int> st; // 单调递减栈,用来存储柱子的索引
        
        st.push(0); // 将第一个柱子的索引压入栈中
        
        // 从数组的第二个柱子开始遍历
        for (int i = 1; i < height.size(); i++) {
            // 处理当前柱子高度小于等于栈顶柱子的情况
            if (height[i] <= height[st.top()]) {
                st.push(i); // 将当前柱子的索引压入栈中
            }
            // 处理当前柱子高度等于栈顶柱子的情况
            else if (height[i] == height[st.top()]) {
                st.pop(); // 可以不加,效果是一样的,但处理相同的情况的思路却变了。
                st.push(i); // 将当前柱子的索引压入栈中,更新相同高度柱子的位置
            }
            // 处理当前柱子高度大于栈顶柱子的情况
            else {
                // 不断弹出栈顶元素,直到栈为空或者当前柱子的高度小于等于栈顶柱子的高度
                while (!st.empty() && height[i] > height[st.top()]) {
                    int mid = st.top(); // 当前柱子的左边界
                    st.pop();
                    if (!st.empty()) {
                        // 计算能接到的雨水量
                        int h = min(height[st.top()], height[i]) - height[mid]; // 高度差
                        int w = i - st.top() - 1; // 宽度
                        sum += h * w; // 累加到结果中
                    }
                }
                st.push(i); // 将当前柱子的索引压入栈中
            }
        }
        return sum; // 返回总雨水量
    }
};

2柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

输入: heights = [2,4]
输出: 4

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104

单调栈思路:本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序应该是从大到小的顺序!

  1. 单调递减栈:创建一个单调递减栈,用于存储柱子的索引。栈内元素按照柱子的高度递减排列。

  2. 遍历柱子:从左到右遍历柱子,对于每个柱子,执行以下操作:

    • 如果当前栈为空或者当前柱子的高度大于栈顶柱子的高度,则将当前柱子的索引压入栈中。这样可以保证栈内元素的高度是单调递减的,且每个柱子能找到其向左最近的比它低的柱子。

    • 如果当前柱子的高度等于栈顶柱子的高度,则说明当前柱子和栈顶柱子的高度相同,这种情况下,栈顶元素的位置无关紧要,所以将栈顶柱子的索引弹出,然后将当前柱子的索引压入栈中,以更新相同高度柱子的位置。

    • 如果当前柱子的高度小于栈顶柱子的高度,则说明当前柱子无法向右扩展形成更大的矩形面积。因此,需要不断弹出栈顶元素,直到栈为空或者当前柱子的高度大于栈顶柱子的高度为止。在弹出栈顶元素的过程中,可以计算以弹出柱子为高度的矩形的面积,并更新最大矩形面积。

  3. 计算矩形面积:在每次弹出栈顶元素时,计算以弹出柱子为高度的矩形的面积。矩形的宽度可以通过当前柱子的索引和栈顶元素的索引来计算。

  4. 更新最大矩形面积:每次计算出矩形的面积后,将其与当前的最大矩形面积进行比较,取较大值作为最大矩形面积。

  5. 返回结果:遍历完所有柱子后,得到的最大矩形面积即为所求结果。

在处理柱状图中最大矩形的问题时,在数组的两端加入高度为0的柱子是一种常用的技巧,这样做的目的是为了处理边界情况。

  1. 处理左边界情况:在数组的开头插入一个高度为0的柱子,这样做是为了确保整个数组都能被处理到。如果不在开头插入一个高度为0的柱子,那么对于数组的第一个柱子,它的左边界将无法确定。如果数组本身是降序的,例如 [8,6,4,2],在 8 入栈后,6 开始与8 进行比较,此时我们得到 mid(8),rigt(6),但是得不到 left。因为 将 8 弹出之后,栈里没有元素了,那么为了避免空栈取值,直接跳过了计算结果的逻辑。之后又将6 加入栈(此时8已经弹出了),然后 就是 4 与 栈口元素 8 进行比较,周而复始,那么计算的最后结果resutl就是0

  2. 处理右边界情况:在数组的末尾插入一个高度为0的柱子,这样做是为了确保所有柱子都能被弹出栈并计算对应的矩形面积。如果不在末尾插入一个高度为0的柱子,那么在遍历完所有柱子后,可能还会剩余一些柱子留在栈中,无法找到右边界。如果数组本身就是升序的,例如[2,4,6,8],那么入栈之后 都是单调递减,一直都没有走 当前遍历的元素heights[i]小于栈顶元素heights[st.top()]的情况 计算结果的哪一步,所以最后输出的就是0了

代码:

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        int result = 0; // 存储最大矩形面积的变量
        stack<int> st; // 单调递增栈,用于存储柱子的索引
        heights.insert(heights.begin(), 0); // 在柱子数组的开头插入一个高度为0的柱子,方便处理边界情况
        heights.push_back(0); // 在柱子数组的末尾插入一个高度为0的柱子,方便处理边界情况
        st.push(0); // 将第一个柱子的索引压入栈中
        
        // 从第二个柱子开始遍历
        for(int i = 1; i < heights.size(); i++) {
            // 处理当前柱子高度大于栈顶柱子高度的情况
            if(heights[i] > heights[st.top()]) {
                st.push(i); // 将当前柱子的索引压入栈中
            } 
            // 处理当前柱子高度等于栈顶柱子高度的情况
            else if(heights[i] == heights[st.top()]) {
                st.pop(); // 可以不加,效果是一样的,但处理相同的情况的思路却变了。
                st.push(i); // 将当前柱子的索引压入栈中,更新相同高度柱子的位置
            } 
            // 处理当前柱子高度小于栈顶柱子高度的情况
            else {
                // 不断弹出栈顶元素,直到栈为空或者当前柱子的高度大于栈顶柱子的高度
                while(!st.empty() && heights[i] < heights[st.top()]) {
                    int mid = st.top(); // 当前柱子的索引,即矩形的高度
                    st.pop(); // 弹出栈顶元素
                    if(!st.empty()) {
                        int left = st.top(); // 左边界的索引
                        int right = i; // 右边界的索引
                        int w = right - left - 1; // 矩形的宽度
                        int h = heights[mid]; // 矩形的高度
                        result = max(result, w * h); // 更新最大矩形面积
                    }
                }
                st.push(i); // 将当前柱子的索引压入栈中
            }
        }
        return result; // 返回最大矩形面积
    }
};

3销售分析III

表: Product

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| product_id   | int     |
| product_name | varchar |
| unit_price   | int     |
+--------------+---------+
product_id 是该表的主键(具有唯一值的列)。
该表的每一行显示每个产品的名称和价格。

表:Sales

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| seller_id   | int     |
| product_id  | int     |
| buyer_id    | int     |
| sale_date   | date    |
| quantity    | int     |
| price       | int     |
+------ ------+---------+
这个表可能有重复的行。
product_id 是 Product 表的外键(reference 列)。
该表的每一行包含关于一个销售的一些信息。

编写解决方案,报告2019年春季才售出的产品。即2019-01-012019-03-31(含)之间出售的商品。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Product table:
+------------+--------------+------------+
| product_id | product_name | unit_price |
+------------+--------------+------------+
| 1          | S8           | 1000       |
| 2          | G4           | 800        |
| 3          | iPhone       | 1400       |
+------------+--------------+------------+
Sales table:
+-----------+------------+----------+------------+----------+-------+
| seller_id | product_id | buyer_id | sale_date  | quantity | price |
+-----------+------------+----------+------------+----------+-------+
| 1         | 1          | 1        | 2019-01-21 | 2        | 2000  |
| 1         | 2          | 2        | 2019-02-17 | 1        | 800   |
| 2         | 2          | 3        | 2019-06-02 | 1        | 800   |
| 3         | 3          | 4        | 2019-05-13 | 2        | 2800  |
+-----------+------------+----------+------------+----------+-------+
输出:
+-------------+--------------+
| product_id  | product_name |
+-------------+--------------+
| 1           | S8           |
+-------------+--------------+
解释:
id 为 1 的产品仅在 2019 年春季销售。
id 为 2 的产品在 2019 年春季销售,但也在 2019 年春季之后销售。
id 为 3 的产品在 2019 年春季之后销售。
我们只返回 id 为 1 的产品,因为它是 2019 年春季才销售的产品。

思路:

  1. 选择需要的列:首先,我们从产品表(Product)中选择了产品ID(product_id)和产品名称(product_name)这两个列。

  2. 左连接销售表:通过使用 left join,我们将产品表和销售表(Sales)连接起来。这样做是为了获取销售信息,并且即使某些产品没有销售记录,也能够保留它们的信息。

  3. 根据产品ID分组:接着,我们使用 GROUP BY 子句,按照销售表中的产品ID进行分组。这样做是为了确保每个产品只出现一次,以便后续进行聚合操作。

  4. 筛选满足条件的数据:在 GROUP BY 后,我们使用 HAVING 子句来筛选满足特定条件的数据。这个条件是销售日期在 ‘2019-01-01’ 到 ‘2019-03-31’ 之间的产品。我们使用 MAX 函数和 MIN 函数来找到每个产品的最大销售日期和最小销售日期,并将其与指定的日期范围进行比较。

代码:

-- 选择产品表中的产品ID和产品名称
select p.product_id, p.product_name
-- 从产品表(Product)中选择数据,并左连接销售表(Sales)
from Product as p
left join Sales as s
on p.product_id = s.product_id
-- 根据销售表中的产品ID进行分组
group by s.product_id
-- 使用 HAVING 子句筛选满足条件的数据,即销售日期在指定范围内的产品
having max(s.sale_date) <= '2019-03-31' and min(s.sale_date) >= '2019-01-01';

4查询近30天活跃用户数

表:Activity

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| session_id    | int     |
| activity_date | date    |
| activity_type | enum    |
+---------------+---------+
该表没有包含重复数据。
activity_type 列是 ENUM(category) 类型, 从 ('open_session', 'end_session', 'scroll_down', 'send_message') 取值。
该表记录社交媒体网站的用户活动。
注意,每个会话只属于一个用户。

编写解决方案,统计截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

以 任意顺序 返回结果表。

结果示例如下。

示例 1:

输入:
Activity table:
+---------+------------+---------------+---------------+
| user_id | session_id | activity_date | activity_type |
+---------+------------+---------------+---------------+
| 1       | 1          | 2019-07-20    | open_session  |
| 1       | 1          | 2019-07-20    | scroll_down   |
| 1       | 1          | 2019-07-20    | end_session   |
| 2       | 4          | 2019-07-20    | open_session  |
| 2       | 4          | 2019-07-21    | send_message  |
| 2       | 4          | 2019-07-21    | end_session   |
| 3       | 2          | 2019-07-21    | open_session  |
| 3       | 2          | 2019-07-21    | send_message  |
| 3       | 2          | 2019-07-21    | end_session   |
| 4       | 3          | 2019-06-25    | open_session  |
| 4       | 3          | 2019-06-25    | end_session   |
+---------+------------+---------------+---------------+
输出:
+------------+--------------+ 
| day        | active_users |
+------------+--------------+ 
| 2019-07-20 | 2            |
| 2019-07-21 | 2            |
+------------+--------------+ 
解释:注意非活跃用户的记录不需要展示。

代码:

-- 选择活动日期(activity_date)作为日期,以及计算每天活跃用户的数量
select activity_date as day, count(distinct user_id) as active_users
-- 从活动表(Activity)中选择数据
from Activity
-- 筛选出日期在 '2019-06-28' 到 '2019-07-27' 之间的记录
where activity_date <= '2019-07-27' and activity_date > '2019-06-27'
-- 根据活动日期进行分组
group by activity_date;

5 文章浏览 I

Views 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| article_id    | int     |
| author_id     | int     |
| viewer_id     | int     |
| view_date     | date    |
+---------------+---------+
此表可能会存在重复行。(换句话说,在 SQL 中这个表没有主键)
此表的每一行都表示某人在某天浏览了某位作者的某篇文章。
请注意,同一人的 author_id 和 viewer_id 是相同的。

请查询出所有浏览过自己文章的作者

结果按照 id 升序排列。

查询结果的格式如下所示:

示例 1:

输入:
Views 表:
+------------+-----------+-----------+------------+
| article_id | author_id | viewer_id | view_date  |
+------------+-----------+-----------+------------+
| 1          | 3         | 5         | 2019-08-01 |
| 1          | 3         | 6         | 2019-08-02 |
| 2          | 7         | 7         | 2019-08-01 |
| 2          | 7         | 6         | 2019-08-02 |
| 4          | 7         | 1         | 2019-07-22 |
| 3          | 4         | 4         | 2019-07-21 |
| 3          | 4         | 4         | 2019-07-21 |
+------------+-----------+-----------+------------+

输出:
+------+
| id   |
+------+
| 4    |
| 7    |
+------+

代码:

select distinct author_id as id
from Views
where author_id = viewer_id
order by 1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/543009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 net/http 抽象出 go 服务优雅停止的一般思路

和其他语言相比&#xff0c;Go 中有相同也有不同&#xff0c;相同的是实现思路上和其他语言没啥差异&#xff0c;不同在于 Go 采用的是 goroutine channel 的并发模型&#xff0c;与传统的进程线程相比&#xff0c;实现细节上存在差异。 本文将从实际场景和它的一般实现方式展…

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码

包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接&#xff1a;https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码&#xff1a;q497

3D室内装潢设计 Sweet Home 3D for Mac 中文直装版

Sweet Home 3D 是一款非常棒的家装辅助设计软件&#xff0c;支持包括中文在内的16中语言&#xff0c;它能帮您通过二维的家居平面图来设计和布置您的家具,还可以用三维的视角浏览整个装修布局的全貌。是一款操作起来简单方便&#xff0c;使用起来快捷、迅速&#xff0c;拥有超高…

在Mac主机上连接Linux虚拟机

前言 最近醉心于研究Linux&#xff0c;于是在PD上安装了一个Debian Linux虚拟机&#xff0c;用来练练手。但是每次在mac和Linux之间切换很是麻烦&#xff0c;有没有一种方法&#xff0c;可以在mac终端直接连接我的虚拟机&#xff0c;这样在mac终端上就可以直接操控我的Linux虚…

Redis之路系列(1)千里之行始于足下

01 千里之行始于足下 文章内容基于redis6 安装与运行 无论你一名极客还是一名工程师&#xff0c;Redis安装我都推荐源码安装&#xff0c;请前往官方下载地址&#xff1a;http://redis.io/download 进行源码下载&#xff0c;偶数为稳定版 奇数为不稳定版。 如果你是类linux系统…

传统图机器学习的特征工程-全图

将整张图表示成为一个低维向量&#xff0c;反映全图的特征 key idea&#xff1a;Bag-of-Words&#xff08;BOW&#xff09;把图看作文章&#xff0c;把节点看作单词 Kernel mothods

【python】python汽车之家数据抓取分析可视化(代码+报告+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

盲人独立出行的新里程:“盲人软件”赋能无障碍生活

作为一名资深记者&#xff0c;我始终致力于探索并分享那些以科技之力提升特殊群体生活质量的故事。最近&#xff0c;一款名为蝙蝠避障的盲人软件进入了我的视野&#xff0c;其强大的避障导航功能正悄然改变着视障人士的出行方式&#xff0c;赋予他们前所未有的独立生活能力。 …

小贴士:Windows下docker挂载目录填坑记录

为便于代码调试和维护&#xff0c;一般在生成 Docker 容器时&#xff0c;会将宿主机的目录挂载到容器里。在macOS里使用终端运行 Shell 脚本&#xff0c;调试一切正常&#xff0c;但是在 Windows 里使用 Git Bash 终端运行同样的脚本时&#xff0c;发现挂载失败。 1 问题描述 …

【产品经理修炼之道】- 融资租赁相关业务介绍

一、什么是融资租赁&#xff1f; 根据《民法典》第735条的规定&#xff0c;融资租赁合同是出租人根据承租人对出卖人、租赁物的选择&#xff0c;向出卖人购买租赁物&#xff0c;提供给承租人使用&#xff0c;承租人支付租金的合同。 例如&#xff0c;A工厂因业务发展需要欲购置…

赋能Web3用户:增强在线隐私

随着数字化时代的发展&#xff0c;人们越来越依赖互联网来进行各种活动&#xff0c;从社交互动到金融交易&#xff0c;几乎所有的日常生活都离不开网络。然而&#xff0c;随之而来的是个人隐私安全面临的挑战。在传统的互联网架构下&#xff0c;用户的个人数据往往被中心化的平…

971: 统计利用先序遍历创建的二叉树的深度

解法&#xff1a; 1.先序遍历创建二叉树链表形式 2.求二叉树的深度 用后序遍历实现&#xff1a; 1.后序遍历求节点A左右子树高度 2.对节点A&#xff1a; 1.取左右子树较大高度 2.返回高度1&#xff08;即以节点A为根节点的子树的最大深度&#xff09; 例如 #include <ios…

fast_bev 学习笔记

目录 一. 简述二. 输入输出三. github资源四. 复现推理过程4.1 cuda tensorrt 版 训练修改图像数 一. 简述 原文:Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline FAST BEV是一种高性能、快速推理和部署友好的解决方案&#xff0c;专为自动驾驶车载芯片设计…

python画神经网络图

代码1(画神经网络连接图&#xff09; from math import cos, sin, atan import matplotlib.pyplot as plt # 注意这里并没有用到这个networkx这个库&#xff0c;完全是根据matploblib这个库来画的。 class Neuron():def __init__(self, x, y,radius,nameNone):self.x xself.y …

为什么要部署IP SSL证书?怎么申请?

我们需要知道什么是IP SSL证书。SSL&#xff0c;全称为Secure Sockets Layer&#xff0c;即安全套接层&#xff0c;是为网络通信提供安全及数据完整性的一种安全协议。而IP SSL证书就是基于SSL协议的一种证书&#xff0c;它能够为网站和用户的数据传输提供加密处理&#xff0c;…

《深入浅出Spring Boot 3.x》正式出版了一周

各位&#xff0c;我编写的《深入浅出Spring Boot 3.x》已经正式发版了。 目前在京东已经开始销售了&#xff0c;希望有需要的朋友多多支持哦。 尽量采用Java 8后的语法编写&#xff0c;采用JDK 17去使用Jarkata EE 9。 相关内容如下&#xff1a;

“木偶猴帝国”渐起,BRC-20生态Meme币PUPS成为新星

比特币生态中基于BRC20协议的木偶猴代币PUPS在最近一周内价格暴涨1101%&#xff0c;达到了44.56美元&#xff0c;而其他一些BRC20代币&#xff0c;如WZRD、W☮、ZBIT、$π等也经历了显著的价格上涨&#xff0c;带动交易量攀升。 PUPS正在形成一种图币新玩法&#xff0c;与木偶…

最优二叉搜索树的设计与分析

最优二叉搜索树的设计与分析 引言最优二叉搜索树的定义构建最优二叉搜索树的算法算法步骤伪代码C代码示例总结 引言 在计算机科学中&#xff0c;二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;是一种非常重要的数据结构&#xff0c;它允许我们高效…

使用python编写网页自动答题-仿真考试

自动化实践经验分享 监听数据包地址&#xff1a;通过监听数据包地址&#xff0c;可以获得实时的答案信息&#xff0c;确保答题的准确性和实效性。提取答案内容&#xff1a;使用正则表达式和json模块&#xff0c;可以快速提取和处理答案信息。答题操作&#xff1a;根据答案内容…

SHARE 203S PRO:倾斜摄影相机在地灾救援中的应用

在地质灾害的紧急关头&#xff0c;救援队伍面临的首要任务是迅速而准确地掌握灾区的地理信息。这时&#xff0c;倾斜摄影相机成为了救援测绘的利器。SHARE 203S PRO&#xff0c;这款由深圳赛尔智控科技有限公司研发的五镜头倾斜摄影相机&#xff0c;以其卓越的性能和功能&#…