騰訊2016研發工程師編程題



本題目只是針對題目要求,只是其中一種解決方案,如有更好的解法請留言討論

如果大家仔細觀察,格雷碼其實是有規律的,他一定會出現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;
    }
};





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章