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. Chrome控制台选择器简介

    Chrome的控制台是支持用$来获取元素的,这点可能是很多人不知道的.本篇文章将会简单介绍怎样更好的来使用这种快捷方式来获取元素. 判断当前窗口的$是来自谁的 我们知道jQ里面经常使用$来进行元素选择 ...

  2. [python学习笔记] 开篇

    今天开始学习markdown,立贴为证. 平均一天一小时.两个月先学完基础. 所有的帖子只为了学习记录,有不对的请提出,轻吐槽

  3. S2_SQL_第二章

    第二章:初始mySql 2.1:mySql简介 2.1.2:mysql的优势 运行速度块,体积小,命令执行的块 使用成本低,开源的 容易使用 可移植性强 2.2:mysql的配置 2.2.1:端口配置 ...

  4. jQuery经典案例

    示例1:鼠标点击左侧菜单实现打开和关闭功能: html及css代码部分: <!DOCTYPE html> <html lang="en"> <head ...

  5. 教你ASP.NET中如何防止注入攻击

    你应该在程序中验证所有的不信任输入.你应该假定所有的用户输入都是非法的.用户可以在应用程序中提供表单字段,查询字串,客户端cookies和浏览器环境值比如用户代理字串和IP地址等. 弱输入校验通常为注 ...

  6. 【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之注册与登录监听

    一.引言 在数据库和静态页面都创建好之后,下面就该接着完成后台Node.js监听注册和登录的部分了.这个部分主要使用的技术是:Node.js的Express框架和ajax异步请求.登录和注册的代码实现 ...

  7. fiddler 监听HttpClient发送的请求

    用HttpClient模拟浏览器发送请求,设置一下代理httpClient.getHostConfiguration().setProxy("127.0.0.1", 8888);

  8. Python实战之Selenium自动化测试web登录(2)

    #!/usr/bin/env python3 # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver ...

  9. C# Async/await 异步多线程编程

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  10. epoll模型的使用

    1. 创建epoll句柄 int epfd = epoll_create(int size); 该函数生成一个epoll专用的文件描述符.它其实是在内核申请一空间,用来存放你想关注的socket fd ...