下面的 C++ 代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。
int find_max(const vector<int>& nums) {
if (nums.empty()) {
throw invalid_argument("输入数组不能为空");
}
int max_value = nums[0];
for (int num : nums) {
if (num > max_value) {
max_value = num;
}
}
return max_value;
}分析时间复杂度时关注循环层数和每层迭代次数,递归算法则分析递归树。注意最坏/最好/平均情况的区别。
分析复杂度时注意外层循环和内层循环的关联。例如内外两层都到n的循环不一定是O(n²),要看内层是否每次都在缩小。
【考点】向量容器|容器操作|函数重载与模板
本题考查 GESP 五级 C++ 大纲中的向量容器(第 13 章)、容器操作(第 14 章)、函数重载与模板(第 25 章)。命题人卡住的是学生混淆 vector 与 array 空间性质的弱点——很多孩子背了"数组空间 O(1)"却忘了 vector 是动态数组需额外空间。