349 Intersection of Two Arrays
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
set<int>tmpans;
vector<int> ans;
int ln1=nums1.size(),ln2=nums2.size();
if (ln1==0 || ln2==0) return ans;
for(int i=0;i<ln1;i++)
for(int j=0;j<ln2;j++)
{
if ((nums1[i]==nums2[j]) && (tmpans.find(nums1[i])==tmpans.end()))
{
tmpans.insert(nums1[i]);
ans.push_back(nums1[i]);
}
}
return ans;
}
};
383 Ransom Note
class Solution {
public:
bool canConstruct(string ransomNote, string magazine)
{
int flagransom[300],flagmag[300];
for(char i='a';i<='z';i++)
{
flagmag[i]=0;
flagransom[i]=0;
}
int lran=ransomNote.length(),lman=magazine.length();
for(int i=0;i<lran;i++)
flagransom[ransomNote[i]]++;
for(int i=0;i<lman;i++)
flagmag[magazine[i]]++;
bool flag=true;
for(char i='a';i<='z';i++)
if (flagmag[i]<flagransom[i])
{
flag=false;
break;
}
return flag;
}
};
387 First Unique Character in a String
class Solution {
public:
int firstUniqChar(string s)
{
int ans=-1;
int flag[300];
for(char i='a';i<='z';i++)
flag[i]=0;
int len=s.length();
for(int i=0;i<len;i++)
flag[s[i]]++;
for(int i=0;i<len;i++)
if (flag[s[i]]==1)
{
ans=i;
break;
}
return ans;
}
};
384 Shuffle an Array
class Solution
{
public:
vector<int> origin;
vector<int> per;
int len;
Solution(vector<int> nums)
{
len= nums.size();
origin.resize(len);
per.resize(len);
copy(nums.begin(),nums.end(),origin.begin());
copy(nums.begin(),nums.end(),per.begin());
}
/** Resets the array to its original configuration and return it. */
vector<int> reset()
{
return origin;
}
/** Returns a random shuffling of the array. */
vector<int> shuffle()
{
next_permutation(per.begin(),per.end());
return per;
}
};
350 Intersection of Two Arrays II
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
{
set<int>tmpans;
vector<int> ans;
int ln1=nums1.size(),ln2=nums2.size();
if (ln1==0 || ln2==0) return ans;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int p1=0,p2=0;
while (p1<ln1 && p2<ln2)
{
if (nums1[p1]==nums2[p2])
{
ans.push_back(nums1[p1]);
p1++;p2++;
}
else
if (nums1[p1]>nums2[p2]) p2++;else p1++;
}
return ans;
}
};
374 Guess Number Higher or Lower
// Forward declaration of guess API.
// @param num, your guess
// @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
int guess(int num);
class Solution
{
public:
int guessNumber(int n)
{
int left=1,right=n;
int myguess;
for(;;)
{
myguess=(right-left)/2+left;
int res=guess(myguess);
if (res==0)
{
return myguess;
}
if (res==1) left = myguess+1 ;
if (res==-1) right = myguess -1;
}
return right;
}
};
377 Combination Sum IV
class Solution {
public:
int combinationSum4(vector<int>& nums, int target)
{
int f[target+10]={0};
int ln=nums.size();
f[0]=1;
for(int v=1;v<=target;v++)
for(int i=0;i<ln;i++)
if (v>=nums[i])
f[v]+=f[v-nums[i]];
return f[target];
}
};