您的位置:首页 > 其它

[leetcode]

2015-10-06 10:51 309 查看

1. MoveZeros

class Solution {
public:
void moveZeroes(vector<int> &num) {
/* two pointers*/
vector<int>::iterator itfront, itbehind;
itfront = itbehind = num.begin(); //return an iterater
while (itfront != num.end())
{
if (*itfront != 0) // if not zero,copy? to itbehind, then front++,behind++
{
if (itfront != itbehind)
{
*itbehind++ = *itfront++;
}
else
{
itfront++;
itbehind++;
}
}
else // if itfront is zero,front++
{
itfront++;
}
}
while (itbehind != num.end())
{
*itbehind++ = 0;
}
}
};


2. FirstBadVersion

// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution {
public:
int firstBadVersion(int n) {
int start=1,end=n;
int mid;
while (start<=end)
{
// bug when start=end=1
//mid=start/2+end/2; /*or:operator priority mid=start+(end-start)>>1; data overflow mid=(start+end)/2*/
mid = start+(end-start)/2;
if(!isBadVersion(mid)) // not bad version
{
start=mid+1;
}
else  //  bad version
{
if ((mid==1 )||(!isBadVersion(mid-1)))  //mid-1 is not bad version (mid>1)
return mid;
else
end=mid-1;
}

}
}
};


3. MissingNumber

class Solution {
public:
int missingNumber(vector<int>& nums) {
int size=nums.size(); // not in loop
int bitret=nums[0]^size;
for (int i=1;i<size;i++)
{
bitret^=nums[i]^i; //one loop
}
return bitret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: