题目:
Given an unsorted integer array, find the smallest missing positive integer.
Example 1:
Input: [1,2,0] Output: 3
Example 2:
Input: [3,4,-1,1] Output: 2
Example 3:
Input: [7,8,9,11,12] Output: 1
Note:
Your algorithm should run in O(n) time and uses constant extra space.
代码:
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
set<int> numset;
for (int i = 0; i<nums.size(); i++)
{
if (nums[i] > 0)
numset.insert(nums[i]);
}
if (numset.size() < 1)
return 1;
int pre = *(numset.begin());
if (pre > 1)
return 1;
for (set<int>::iterator iter = numset.begin(); iter != numset.end(); iter++)
{
if (*iter - pre > 1)
return pre + 1;
pre = *iter;
}
return pre + 1;
}
};
题外话:
转眼一个月就过去了,开始四月份的第一篇博客时,我还很有信心地认为本月肯定会轻松完成任务,没想到两篇卡在中间还没写完。现在听着Mystery of Love在码字,即将迎来放空的假期。最近收获还挺多的,比较深刻的是关于自信心肌肉的训练。
这个概念第一次是在上周参加的一个分享会上接触到,说人的自信心也需要锻炼,就像肌肉一样,定期定量地锻炼它,它才会融入我们的气质里。我们要勇于承认自己的卓越(remarkable)。巧合的是,刚才看了一期TED,主题居然和这个出奇地相似。这期TED名为“与大脑合作”,感兴趣的朋友可以去搜搜看。大意和自信心肌肉类似,如果我们想做什么事情,需要让大脑清晰地意识到我们的意愿,要具体到细节。然后是将愉悦感与达成目标相关联,将停滞不前与不开心相关联,大脑会自动地配合我们的意愿。最后,需要跳出舒适区,让熟悉的事情变得不熟悉,让不熟悉的事情变得熟悉。关于这部分,我的理解是跳出舒适区,开始行动吧。跳出对自己熟悉的定义,例如“做不到、好难、远不如自己所想……”;练习“我可以、我想、如果做到我很开心:)”。
好吧,一不留神开始写鸡汤,不过对于经常不自觉“谦虚”的我们,也许练习自信不失为一种好的选择。毕竟,相信自己是快乐的一部分。
最后,预祝大家五一劳动节快乐^________________________________________^!