在for循环中索引 i 的条件判断中,我们要使用 != 而不是使用 <,原因有以下两点:
(1)C++中许多的STL容器都定义了迭代器和 != 运算符,而绝大多数没有定义< 运算符与下标运算,考虑到编程风格的通用性(在标准库提供的所有容器都有效),我们要养成使用迭代器与 != 的习惯。
(2)使用 != 的判断速度可能比使用 < 更快(我也不确定对不对,可能和计算机的底层逻辑有关)。
代码示例:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int k=1;
const int length=nums.size();
// 不要写成 for(int i=1;i!=nums.size();i++),否则每次循环都要计算一次nums.size()
for(int i=1;i!=length;i++)
if(nums[i]!=nums[k-1]){
nums[k]=nums[i];
k++;
}
return k;
}
};