好奇心来源于下面的一段代码, 一个是unordered_map, 这是c++11新加的container. 另外还有unordered_set, unordered_multimap, unordered_multiset.
另外在for循环中, 可以使用下列形式:
1 for (auto &element : container) { 2 std::cout << element << std::endl; 3 }
还有一点就是变量的初始化, 请注意: int maxlen{1}; 这也是c++11的新特性...
使g++支持c++11可以加编译选项 -std=c++0x 这里0x就是11的draft(暂时不懂什么意思这句话2333)
1 #include <unordered_map> 2 #include <algorithm> 3 class Solution { 4 public: 5 int longestConsecutive(vector<int> &num) { 6 if (num.size() == 0) 7 return 0; 8 unordered_map<int, int> uii; 9 int maxlen{1}; 10 for (auto &val: num) { 11 if (uii[val] != 0) { 12 continue; 13 } 14 uii[val] = 1; 15 int leftbound{uii[val-1]}, rightbound{uii[val+1]}; 16 uii[val-leftbound] = uii[val+rightbound] = 1+leftbound+rightbound; 17 maxlen = max(maxlen, 1+leftbound+rightbound); 18 } 19 return maxlen; 20 } 21 };
原文:http://www.cnblogs.com/Stomach-ache/p/3729392.html