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家族

    按照时间的早晚从大数据出现之前的时代讲到现在.暂时按一个城市来比喻吧,反正Landscape的意思也大概是”风景“的意思. 早在大数据概念出现以前就存在了各种各样的关于数学.统计学.算法.编程语言的研 ...

  2. 利用GPU实现无尽草地的实时渲染

    0x00 前言 在游戏中展现一个写实的田园场景时,草地的渲染是必不可少的,而一提到高效率的渲染草地,很多人都会想起GPU Gems第七章 <Chapter 7. Rendering Countl ...

  3. C#的"?"修饰符和"??"运算符

    一.  ?  可空类型修饰符 “?”用来修饰为空的值类型,在加上“?”修饰符后,值类型也可以为空了,如: public int? CommandTimeout { get; }: var prop = ...

  4. C#最基本的小说爬虫

    新手学习C#,自己折腾弄了个简单的小说爬虫,实现了把小说内容爬下来写入txt,还只能爬指定网站. 第一次搞爬虫,涉及到了网络协议,正则表达式,弄得手忙脚乱跑起来效率还差劲,慢慢改吧. 爬的目标:htt ...

  5. Even Parity uva11464 模拟

    Even Parity Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Submit]   ...

  6. hdu1356&hdu1944 博弈论的SG值(王道)

    S-NimProblem DescriptionArthur and his sister Caroll have been playing a game called Nim for some ti ...

  7. Python cPickle模块

    新博客地址:http://gorthon.sinaapp.com/ 持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Py ...

  8. SQLServer中SQL语句与可执行二进制语句

    SQLServer可以执行正常SQL语句也可以执行被转换的二进制语句,一般会用此方法进行数据库注入操作,骗过基本的字符过滤 --将二进制格式转为普通SQL语句 ) = 0x53454C45435420 ...

  9. springboot高并发redis细粒度加锁(key粒度加锁)

    本文探讨在web开发中如何解决并发访问带来的数据同步问题. 1.需求: 通过REST接口请求并发访问redis,例如:将key=fusor:${order_id} 中的值+1: 2.场景: 设想,多线 ...

  10. 关于SEO的一些见解---关键词的选取布局以及内外链的建设

    前言     SEO是英文 Search EngineOptimiation的缩写,中文翻译为"搜索引擎优化"简单地说, SEO就是从搜索引擎上获得流量的技术 . 搜索引掌优化的主 ...