record.find( nums[i] ) != record.end() 是在record里能找到nums[i]?为啥是!=
来源:4-7 查找表和滑动窗口 Contain Duplicate II
zombo29
2017-08-09
这是C++的固定写法吗? 找得到不是==反而是!=?有点晕。。。之前1.Two Sum也这样用,我忘记问了
谢谢老师解答
写回答
1回答
-
record.find( nums[i] ) 返回在record里寻找nums[i]得到的迭代器。而record.end()是一个特殊的迭代器,表示在record的末尾(不是最后一个元素,是比最后一个元素还要向后的元素)。如果record里没有nums[i],最终就会指向record.end(),否则,就会返回指向这个元素的迭代器。所以,record.find( nums[i] ) == record.end() 是没有找到nums[i]这个元素;record.find( nums[i] ) != record.end() 是找到了这个元素。
所以,不能光看==还是!=,还要看比较的究竟是什么:)可以把这里的record.end()理解成是-1或者null:)
如果不使用C++语言,其实不需要在C++语法上深究,强烈建议在听懂思路的基础上,使用你熟悉的语言完成这些问题哦。leetcode上本身也支持大多数主流语言,可以提交给leetcode验证你的实现。相信这种实践会让你对这些问题理解的更深入哦:)
222017-08-09
相似问题