record.find( nums[i] ) != record.end() 是在record里能找到nums[i]?为啥是!=

来源:4-7 查找表和滑动窗口 Contain Duplicate II

zombo29

2017-08-09

这是C++的固定写法吗? 找得到不是==反而是!=?有点晕。。。之前1.Two Sum也这样用,我忘记问了

谢谢老师解答

写回答

1回答

liuyubobobo

2017-08-09

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验证你的实现。相信这种实践会让你对这些问题理解的更深入哦:)

2
2
liuyubobobo
回复
zombo29
继续加油!:)
2017-08-09
共2条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程