C++实现收集雪花问题,找出最大包裹大小
### 🍃思路分析 本题要求找出每种雪花最多有2片的最大包裹大小。可以使用滑动窗口的方法来解决这个问题。通过维护一个滑动窗口,窗口内每种雪花的数量不超过2片,不断更新窗口的大小以找到最大的窗口长度。 ### 💻代码实现 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int T; cin >> T; while (T--) { int n; cin >> n; vector<int> snowflakes(n); for (int i = 0; i < n; ++i) { cin >> snowflakes[i]; } vector<int> count(10001, 0); // 用于记录每种雪花的数量 int left = 0, maxSize = 0; for (int right = 0; right < n; ++right) { int currentSnowflake = snowflakes[right]; count[currentSnowflake]++; // 当当前雪花数量超过2片时,移动左指针 while (count[currentSnowflake] > 2) { count[snowflakes[left]]--; left++; } // 更新最大包裹大小 maxSize = max(maxSize, right - left + 1); } cout << maxSize << endl; } return 0; } ``` ### 📝代码解释 1. **输入处理**:首先读取测试数据的组数 `T`,对于每组数据,读取雪花的总数 `n` 和每片雪花的标记。 2. **滑动窗口**:使用两个指针 `left` 和 `right` 来维护一个滑动窗口。`right` 指针不断向右移动,将新的雪花加入窗口。当窗口内某种雪花的数量超过2片时,移动 `left` 指针,将窗口左侧的雪花移除,直到该种雪花的数量不超过2片。 3. **更新最大包裹大小**:在每次移动 `right` 指针后,更新最大包裹大小 `maxSize`。 ### ⚙️复杂度分析 - **时间复杂度**:$O(T * n)$,其中 $T$ 是测试数据的组数,$n$ 是每组数据中雪花的数量。 - **空间复杂度**:$O(1)$,因为 `count` 数组的大小是固定的,为 $10001$。 ### 🚀开发建议 - **边界条件处理**:在实际开发中,要注意输入数据的边界条件,如 `n` 的范围和雪花标记的范围。 - **代码可读性**:使用有意义的变量名和注释,提高代码的可读性。 - **性能优化**:可以考虑使用更高效的数据结构来优化代码性能,如哈希表。 ######[AI写代码神器 | 664点数解答 | 2026-06-07 15:13:58]
- 雪花诗句数字求和:探秘 1、2、3、4 之和及相关 C++ 代码实现 (DeepSeek | 286点数解答 | 2025-12-15 17:50:18)42
- 用C++解决P2197扩建花坛问题:计算长方形花坛扩建为正方形最少增加的面积(字节豆包 | 280点数解答 | 2026-03-22 16:46:21)53
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)70
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)415
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)376
- Python+Tkinter:打造30以内加减乘除随机出题、判题打分GUI小程序(GPT | 1266点数解答 | 2024-06-19 14:45:56)352
- C++ 实现:求解长方形花坛扩建为正方形最少增加的面积 (字节豆包 | 391点数解答 | 2025-10-19 12:02:25)109
- Python 求解长方形花坛扩建正方形最少增面问题:输入、边长与计算要点 (字节豆包 | 226点数解答 | 2025-10-24 20:24:34)164
- C++ 实现:长方形花坛扩建为正方形最少增加面积的计算及注意事项(字节豆包 | 475点数解答 | 2025-10-24 20:25:01)155
- C++ 求解:桃子家长方形花坛扩建为正方形最少增加多少面积?(字节豆包 | 355点数解答 | 2025-11-22 20:19:07)60
- C++ 求解:桃子家长方形花坛扩建为正方形最少增加的面积(DeepSeek | 88点数解答 | 2025-12-07 15:47:31)185
- C++ 求解:桃子家长方形花坛扩建为正方形最少增加多少面积?(字节豆包 | 327点数解答 | 2025-12-07 19:42:22)66