classSolution{public:
string multiply(string num1, string num2){
string res;int m = num1.size();int n = num2.size();
vector<int>ans((m + n),0);for(int i = m -1; i >=0;--i){for(int j = n -1; j >=0; j--){int n1 = num1[i]-'0';int n2 = num2[j]-'0';int temp = n1 * n2;
temp += ans[i + j +1];
ans[i + j +1]= temp %10;
ans[i + j]+= temp /10;}}for(int i =0; i < m + n; i++){if(res.size()==0&& ans[i]==0)continue;char ch = ans[i]+'0';
res += ch;}return res.size()==0?"0": res;}};
78. 子集
classSolution{private:
vector<vector<int>> res;
vector<int> path;voidbacktracking(vector<int>& nums,int index){
res.push_back(path);if(nums.size()== index){return;}for(int i = index; i < nums.size(); i++){
path.push_back(nums[i]);backtracking(nums, i +1);
path.pop_back();}}public:
vector<vector<int>>subsets(vector<int>& nums){
res.clear();
path.clear();backtracking(nums,0);return res;}};
79. 单词搜索
classSolution{private:int m, n;int vaild[6][6];booldfs(vector<vector<char>>& board, string word,int len,int i,int j,int index){if(index == len)returntrue;if(i -1>=0&& board[i -1][j]== word[index]&&!vaild[i -1][j]){
vaild[i -1][j]=1;if(dfs(board, word, len, i -1, j, index +1)){returntrue;}
vaild[i -1][j]=0;}if(i +1< m && board[i +1][j]== word[index]&&!vaild[i +1][j]){
vaild[i +1][j]=1;if(dfs(board, word, len, i +1, j, index +1)){returntrue;}
vaild[i +1][j]=0;}if(j -1>=0&& board[i][j -1]== word[index]&&!vaild[i][j -1]){
vaild[i][j -1]=1;if(dfs(board, word, len, i, j -1, index +1)){returntrue;}
vaild[i][j -1]=0;}if(j +1< n && board[i][j +1]== word[index]&&!vaild[i][j +1]){
vaild[i][j +1]=1;if(dfs(board, word, len, i, j +1, index +1)){returntrue;}
vaild[i][j +1]=0;}returnfalse;}public:boolexist(vector<vector<char>>& board, string word){
m = board.size();
n = board[0].size();int len = word.size();memset(vaild,0,sizeof(vaild));if(n * m < len)returnfalse;for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(board[i][j]== word[0]){
vaild[i][j]=1;if(dfs(board, word, len, i, j,1)){returntrue;}
vaild[i][j]=0;}}}returnfalse;}};