### 腾讯2020招聘-后台岗位面试知识点解析
#### 1. 压缩算法解压缩问题
**题目背景与分析**
- **背景介绍**:本题涉及字符串压缩与解压缩的基本概念。小Q为了方便传输过长的字符串而设计了一种特定的压缩方法,该方法通过识别字符串中连续重复的子串并将其替换为更简洁的形式来实现压缩。
- **技术点**:本题考查的是字符串处理的基础能力,包括字符串遍历、字符串分割以及字符串构建等基本操作。
**解题思路**
1. **输入分析**:我们需要明确输入的格式为“[m|S]”,其中m代表连续重复的次数,S代表具体的字符串。
2. **解压逻辑**:
- 解析输入:读取每一个字符,遇到左方括号时,开始记录数字m;遇到竖线时,开始记录字符串S;遇到右方括号时,根据m和S构造出解压后的字符串。
- 构造输出:重复步骤2中的过程直到处理完所有输入,最终得到完全解压后的字符串。
3. **边界条件**:注意处理输入为空或者格式不正确的情况。
#### 2. 计算可见楼层数问题
**题目背景与分析**
- **背景介绍**:本题模拟了小Q在步行街中行走并观察楼层数的情景,考查了基础的数据结构和算法应用。
- **技术点**:主要考察数组的应用、遍历技巧以及简单的数学逻辑。
**解题思路**
1. **数据准备**:假设楼层数由数组表示,每个元素表示对应楼的高度。
2. **计算逻辑**:
- 从前向后遍历数组,对于每个位置i,检查其前面的所有楼是否比当前位置i的楼高。
- 如果存在更高或者相等高度的楼,则停止查找,并将当前可视楼的数量加一。
- 最终得到的可视楼数量数组即为答案。
#### 3. 逆序对计数与操作问题
**题目背景与分析**
- **背景介绍**:此题考查了逆序对的概念及其实现,同时加入了动态修改数组的操作。
- **技术点**:重点在于如何高效地计算逆序对数量,通常需要使用到归并排序的思想。
**解题思路**
1. **初始状态**:首先计算原始数组中的逆序对数量。
2. **操作处理**:
- 对于每一次操作,根据提供的整数将数组分成两部分,并分别翻转。
- 使用归并排序的思想重新计算逆序对数量。
3. **结果输出**:输出每次操作后的逆序对数量。
#### 4. 最少休息日问题
**题目背景与分析**
- **背景介绍**:本题模拟了小Q在假期中的活动安排,涉及简单的动态规划思想。
- **技术点**:主要考查动态规划的应用,尤其是状态转移方程的设计。
**解题思路**
1. **状态定义**:设dp[i][j]表示第i天处于状态j时的最少休息天数,其中j=0表示休息,j=1表示工作,j=2表示锻炼。
2. **状态转移**:
- dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + 1(如果第i天休息)
- dp[i][1] = dp[i-1][0] + (如果公司营业)
- dp[i][2] = dp[i-1][0] + (如果健身房营业)
3. **初始化与边界条件**:初始化dp[0][],并处理边界条件。
#### 5. 视野争夺问题
**题目背景与分析**
- **背景介绍**:此题通过一个竞技游戏的场景模拟了区间覆盖的问题。
- **技术点**:本题主要考查区间的合并与最小覆盖问题的解决策略。
**解题思路**
1. **数据准备**:将所有真视守卫的覆盖区间按照起始位置从小到大排序。
2. **区间合并**:
- 遍历所有区间,利用贪心策略选择覆盖范围最广的真视守卫。
- 更新当前需要覆盖的最大位置。
3. **结果输出**:输出所需的最小真视守卫数量。
以上是对给定文件中提到的五个编程题的详细知识点解析,这些题目不仅考验应聘者的编程能力,还要求具备一定的逻辑思维和算法基础。