77. Combinations

题目

分析:求给定数字n,k的组合数,方法是采用深度搜索算法,代码如下(copy网上代码)

 class Solution {
public:
void dfs77(vector<vector<int > > &ans, vector<int> subans, int start, int n, int k)
{
if (subans.size() == k)
{
ans.push_back(subans); return ;
}
for (int i = start; i <= n; i++)
{
subans.push_back(i);
dfs77(ans, subans, i + , n, k);
subans.pop_back(); // 满足一个条件或者该分支递归完后要删除最后一个
}
}
vector<vector<int> > combine(int n, int k) {
vector<vector<int > > ans;
if (n < k || k == ) return ans;
vector<int> subans;
dfs77(ans, subans, , n, k);
return ans;
}
};

--------------------------------------------------------------------------------分割线------------------------------------------------------------------

78. Subsets

题目

分析:求一个集合的所有子集,代码如下(copy网上代码)

 class Solution {
public:
vector<vector<int>>res;
vector<int>ans;
vector<vector<int>> subsets(vector<int>& nums) {
if(nums.empty()) return res;
sort(nums.begin(), nums.end());
dfs(, ans, nums);
return res; }
void dfs(int k, vector<int>ans, vector<int> nums){
res.push_back(ans);
for(int i = k; i < nums.size(); i++){
ans.push_back(nums[i]);
dfs(i + , ans, nums);
ans.pop_back();
}
}
};

--------------------------------------------------------------------------------------分割线------------------------------------------------------------

79. Word Search

题目

分析:看到这类题目,首先就应该想到“回溯法”,代码如下,具体思路见注释:

 class Solution {
public:
int m,n;
public:
bool exist(vector<vector<char>>& board, string word) {
if(""==word)
return true;
m=board.size();
n=board[].size();
vector<vector<bool>> flag(m,vector<bool>(n,false));
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
if(board[i][j]==word[])
{
flag[i][j]=true;
if(HuiSu(board,i,j,word,,flag))
return true;
else
flag[i][j]=false; }
}
}
return false;
} bool HuiSu(const vector<vector<char>>& board,int i,int j,const string& word,int index,vector<vector<bool>>& flag)
{
if(word[index+] == '\0')
return true; int ii,jj;
ii=i;
jj=j+;
bool temp;
if(isTrue(ii,jj))//向右
{
if(flag[ii][jj] == false && board[ii][jj] == word[index+])
{
flag[ii][jj] = true;
temp = HuiSu(board,ii,jj,word,index+,flag);
if(temp)
return true;
flag[ii][jj] = false;//这一步很重要
}
} ii=i;
jj=j-;
if(isTrue(ii,jj))//向左
{
if(flag[ii][jj] == false && board[ii][jj] == word[index+])
{
flag[ii][jj] = true;
temp = HuiSu(board,ii,jj,word,index+,flag);
if(temp)
return true;
flag[ii][jj] = false;
}
} ii=i-;
jj=j;
if(isTrue(ii,jj))//向上
{
if(flag[ii][jj] == false && board[ii][jj] == word[index+])
{
flag[ii][jj] = true;
temp = HuiSu(board,ii,jj,word,index+,flag);
if(temp)
return true;
flag[ii][jj] = false;
}
} ii=i+;
jj=j;
if(isTrue(ii,jj))//向下
{
if(flag[ii][jj] == false && board[ii][jj] == word[index+])
{
flag[ii][jj] = true;
temp = HuiSu(board,ii,jj,word,index+,flag);
if(temp)
return true;
flag[ii][jj] = false;
}
} return false;
} bool isTrue(int i,int j)
{
if(i<)
return false;
else if(i>=m)
return false;
else if(j<)
return false;
else if(j>=n)
return false; return true;
}
};

Leetcode题解(25)的更多相关文章

  1. [LeetCode题解]: Sort Colors

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given an a ...

  2. [LeetCode 题解]: Maximum Subarray

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Find the c ...

  3. [LeetCode 题解]:Gas Station

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 There are ...

  4. [LeetCode 题解]: plusOne

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given a no ...

  5. [LeetCode 题解]: ZigZag Conversion

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 The string ...

  6. LeetCode 题解 593. Valid Square (Medium)

    LeetCode 题解 593. Valid Square (Medium) 判断给定的四个点,是否可以组成一个正方形 https://leetcode.com/problems/valid-squa ...

  7. 【LeetCode题解】二叉树的遍历

    我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...

  8. leetcode题解-122买卖股票的最佳时期

    题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ...

  9. 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)

    目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...

  10. 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)

    目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...

随机推荐

  1. MultipleOutputs新旧api

    package MRNB_V4; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.con ...

  2. 【个人笔记】《知了堂》前端mySql基础

    指定列之后添加: ALTER TABLE 表名 ADD 添加的新列名 INT AFTER 指定列之后 第一个位置: ALTER TABLE 表名 ADD 添加的新列名 varchar(20) AFTE ...

  3. 理解ES6——Promise

    浏览器的控制台真是个好东西,啥都能干: 这就是Promise,能看出来啥? 1.是个构造函数,可以new实例. 2.自身有一些方法:all.race.reject.resolve... 3.原型上有c ...

  4. xcode7.3 iTunes Store operation failed解决

    使用apploader上传程序 提示:如果您安装了XCode开发环境.在/Applications/XCode.app/Contents/Applications目录中可以找到Application ...

  5. 调用惯例Calling Convention (或者说:调用约定)

    调用惯例影响执行效率,参数的传递方式以及栈清除的方式.   调用惯例 参数传递顺序 谁负责清除参数 参数是否使用暂存器 register 从左到右 被调用者 是 pascal 从左到右 被调用者 否 ...

  6. 学习Matplotlib

    介绍 Matplotlib是一个Python 2D绘图库,可以跨平台生成各种硬拷贝格式和交互式环境的出版品质量图.Matplotlib可用于Python脚本,Python和IPythonshell,j ...

  7. CodeForces 242E二维线段树

                                                                                           E. XOR on Seg ...

  8. bzoj4557【JLOI2016】侦查守卫

    这道题对于我来说并不是特别简单,还可以. 更新一下blog 树形DP f[i][j]表示i的子树中,最高覆盖到i向下第j层的最小花费. g[i][j]表示i的子树全部覆盖,还能向上覆盖j层的最小花费. ...

  9. cs224d 自然语言处理作业 problem set3 (一) 实现Recursive Nerual Net Work 递归神经网络

    1.Recursive Nerual Networks能够更好地体现每个词与词之间语法上的联系这里我们选取的损失函数仍然是交叉熵函数 2.整个网络的结构如下图所示: 每个参数的更新时的梯队值如何计算, ...

  10. Redis info 参数详解

    Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值. 通过给定可选的参数 section ,可以让命令只返回某一部分的信息: server : 一般 ...