酷代码 AI
菜单
服务商

C++ 求解长为 n 序列清空最小操作次数:含题目分析与代码实现

```cpp #include <iostream> #include <vector> #include <algorithm> // 计算最小操作次数的函数 int minOperations(std::vector<int>& nums, int n) { int opCount = 0; // 先对序列进行排序,方便后续处理 std::sort(nums.begin(), nums.end()); int i = 0; while (i < n) { int j = i + 1; // 找到相同数字的连续段 while (j < n && nums[j] == nums[i]) { j++; } // 如果连续段长度大于 1,直接删除 if (j - i > 1) { opCount++; i = j; } else { // 否则尝试与后面的数字交换 if (j < n) { std::swap(nums[i], nums[j]); opCount++; } i++; } } return opCount; } int main() { int t; std::cin >> t; while (t--) { int n; std::cin >> n; std::vector<int> nums(n); for (int i = 0; i < n; i++) { std::cin >> nums[i]; } std::cout << minOperations(nums, n) << std::endl; } return 0; } ``` 1. 注意输入数据的范围,尤其是序列长度和数字的取值范围。 2. 对于排序和交换操作,要确保逻辑的正确性,避免出现错误的结果。 3. 在处理多个测试数据时,要注意每次处理完后数据的重置和状态的更新。 ######[AI写代码神器 | 407点数解答 | 2024-12-21 15:27:41]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]