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. hadoop源码import到eclipse工程

    1.解压hadoop-1.1.2.tar.gz,重点在src文件夹 2.在eclipse中通过菜单栏创建一个java工程,工程名随便 3.在创建的工程上,点击右键,在弹出菜单中选择最后一项,在弹出窗口 ...

  2. PostgreSQL使用MyBatis,insert时返回主键

    MyBatis中普通的insert语句是这样的: <insert id="insert" parameterType="com.xxx.xxx.xxDo" ...

  3. Java 使用Axis实现WebService实例

    在上一篇WebService实例中,基于jdk1.6以上的javax.jws 发布webservice接口.这篇博文则主要用eclipse/myeclipse 使用axis插件进行发布和调用WebSe ...

  4. #pragma编译指令

    #pragma alignment#pragma anon_struct#pragma argsused#pragma checkoption#pragma codeseg#pragma commen ...

  5. Query DSL(2)----Full text queries

    Match Query match查询接受文本/数值/日期 { "match" : { "message" : "this is a test&quo ...

  6. Spring Framework 5.0 新特性

    Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 在这个时间框架内,主要的发展之一就是Spring Boot项目的演变. Spring ...

  7. Django内置的用户认证

    认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户输入的密码,这样一来就要自己编写大量的代码. ...

  8. 用python的TK模块实现猜成语游戏(附源码)

    说明:本游戏使用到的python模块有tkinter,random,hashlib:整个游戏分为四个窗口,一个进入游戏的窗口.一个选关窗口.一个游戏进行窗口和一个游戏结束的窗口. 源码有两个主要的py ...

  9. DataGridView的使用记录

    首先初始化 1 this.CheckView.Columns.Clear(); 2 DataGridViewComboBoxColumn dcomo = new DataGridViewComboBo ...

  10. Jmeter测试HTTPS接口

    (以支付宝网站为例:https://memberprod.alipay.com/account/reg/index.htm) 浏览器:chrome 一.网页上导出证书 1.点击浏览器小锁--" ...