当前位置:首页 > 编程笔记 > 正文
已解决

DailyPractice.2023.10.22

来自网友在路上 158858提问 提问时间:2023-10-23 17:07:30阅读次数: 58

最佳答案 问答题库588位专家为你答疑解惑

文章目录

  • 1.[39. 组合总和]
  • 2.[22. 括号生成]
  • 3.[79. 单词搜索]
  • 4.[131. 分割回文串]

1.[39. 组合总和]

39. 组合总和

class Solution {
public:
vector<vector<int>> res;
vector<int> path;void dfs(vector<int>& candidates,int target,int start,int sum) {if (sum == target) {res.push_back(path);return ;}for (int i = start; i < candidates.size() && sum + candidates[i] <= target; i++) {path.push_back(candidates[i]);dfs(candidates,target,i,sum + candidates[i]);path.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {if (candidates.size() == 0) return res;sort(candidates.begin(),candidates.end());dfs(candidates,target,0,0);return res;}
};

2.[22. 括号生成]

22. 括号生成

class Solution {
public:
vector<string> res;
string path;void process(int open,int close,int n) {if (path.size() == n * 2) {res.push_back(path);return ;}if (open < n) {path.push_back('(');process(open + 1,close,n);path.pop_back();}if (close < open) {path.push_back(')');process(open,close + 1,n);path.pop_back();}}vector<string> generateParenthesis(int n) {if (n == 0) return res;if (n == 1) return {"()"};process(0,0,n);return res;}
};

3.[79. 单词搜索]

class Solution {
public:
int m, n;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
vector<vector<bool>> visited;bool solveHelper(vector<vector<char>>& board, int x, int y, string& word, int idx)  {if (idx == word.size() - 1 && board[x][y] == word[idx]) {return true;}else if(board[x][y]!=word[idx]){return false;}visited[x][y] = true;for (int i = 0; i < 4; i++) {int nx=x+dx[i], ny=y+dy[i];if (nx >= 0 && nx < m && ny >= 0 && ny < n && !visited[nx][ny]){if(solveHelper(board, nx, ny, word, idx+1)){return true;}}}visited[x][y] = false;return false;}bool exist(vector<vector<char>>& board, string word) {m = board.size(), n=board[0].size();visited = vector<vector<bool>>(m, vector<bool>(n, false));for(int i=0; i<m; i++){for(int j=0; j<n; j++){if(solveHelper(board, i, j, word, 0)){return true;}}}return false;}
};

4.[131. 分割回文串]

131. 分割回文串

class Solution {
public:
vector<vector<string>> res;
string path;void process(string &s,int index) {if (index >= s.size()) {res.push_back(path);return ;}for (int i = index; i < s.size(); i++) {if (isVaild(s,index,i) {string str = s.substr(index,i - index + 1);path.push_back(str);}else {continue;}process(s,i + 1);path.pop_back();}}bool isVaild(string &s,int open,int close) {for (int i = open,j = close; i < j; i ++,j --{if (s[i] != s[j]) {return false;}}return true;}vector<vector<string>> partition(string s) {if (s.size() == 1) return res;process(s,0);return res;}
};
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"DailyPractice.2023.10.22":http://eshow365.cn/6-22600-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!