本題目只是針對題目要求,只是其中一種解決方案,如有更好的解法請留言討論
如果大家仔細觀察,格雷碼其實是有規律的,他一定會出現2的n次冪,並且除去首位和前n-1位是鏡像對稱的。
class GrayCode {
public:
vector<string> getGray(int n) {
// write code here
if(n==1)
{
vector<string> v(2);
v[0]="0";
v[1]="1";
return v;
}
vector<string> tmp=getGray(n-1);
vector<string> v(2*tmp.size());
for(unsigned int i=0;i<tmp.size();i++)
{
v[i]="0"+tmp[i];
}
for(unsigned int i=tmp.size();i<v.size();i++)
{
v[i]="1"+tmp[v.size()-i-1];
}
return v;
}
};
本題的性質是一個數出現的次數超過數組一般的題目變形
Talk is cheap, show me the code
class Gift {
public:
int getValue(vector<int> gifts, int n) {
// write code here
int len=gifts.size();
if(len<=1||n<=1)return 0;
int money=gifts[0];int times=1;
for(int i=1;i<len;i++)
{
if(gifts[i]==money)times++;
else
{
times--;
if(times==0)
{
money=gifts[i];
times=1;
}
}
}
times=0;
for(int i=0;i<len;i++)
{
if(money==gifts[i])times++;
}
return times*2>len?money:0;
}
};