leetcode騰訊50-43,-46-53

43. 字符串相乘

給定兩個(gè)以字符串形式表示的非負(fù)整數(shù)num1和num2,返回num1和num2的乘積,它們的乘積也表示為字符串形式。

class?Solution?{

public:

????string?multiply(string?num1,?string?num2)?{

????????//參考做法,由個(gè)位開(kāi)始計(jì)算相加,O(n2)

????????int?m=num1.length(),n=num2.length();

????????vector<int>res(m+n,0);

????????for(int?i=m-1;i>=0;i--)

????????{

????????????for(int?j=n-1;j>=0;j--)

????????????{

????????????????int?temp=res[i+j+1]+(int)(num1[i]-'0')*(num2[j]-'0');

????????????????res[i+j+1]=temp%10;

????????????????res[i+j]+=temp/10;

????????????}

????????}

????????string?s="";

????????int?st=0;

????????while(st<m+n&&res[st]==0)

????????{

????????????st++;

????????}

????????for(int?i=st;i<m+n;i++)

????????{

????????????s+=(res[i]+'0');

????????}

????????return?(s.length()==0)?"0":s;

????}

};

46. 全排列

給定一個(gè) 沒(méi)有重復(fù)數(shù)字的序列,返回其所有可能的全排列。

class?Solution?{

public:

????vector<vector<int>>res;

????vector<int>path;

????vector<vector<int>>?permute(vector<int>&?nums)?{

????????vector<bool>used_i(nums.size(),false);

????????int?num=0;

????????dfs(nums,0,num,used_i);

????????return?res;

????}

????void?dfs(vector<int>&nums,int?s,int&?n,vector<bool>&used)

????{//s表示正在訪問(wèn)的節(jié)點(diǎn)序號(hào),n表示已訪問(wèn)節(jié)點(diǎn)個(gè)數(shù)

????????if(n==nums.size()){

????????????res.push_back(path);

????????????return;

????????}

????????for(int?i=0;i<nums.size();i++)

????????{

????????????if(used[i])continue;

????????????used[i]=true;

????????????n++;

????????????path.push_back(nums[i]);

????????????dfs(nums,i+1,n,used);

????????????used[i]=false;

????????????n--;

????????????path.pop_back();

????????}

????}

};

53. 最大子序和

給定一個(gè)整數(shù)數(shù)組nums,找到一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和。

class?Solution?{

public:

????int?maxSubArray(vector<int>&?nums)?{

????????//動(dòng)態(tài)規(guī)劃:[i]結(jié)尾的最大連續(xù)子數(shù)組和=max(以[i-1]數(shù)字結(jié)尾的的連續(xù)子數(shù)組和+nums[i],nums[i])

????????int??sum=0,Maxsum=nums[0],n=nums.size();

????????for(int?i=0;i<n;i++)

????????{

???????????sum=(nums[i]>=nums[i]+sum)?nums[i]:nums[i]+sum;

???????????Maxsum=(Maxsum>=sum)?Maxsum:sum;???

????????}

????????return?Maxsum;

????}

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容