当前位置: 首页 > news >正文

做网站视频教程西安做网站魔盒

做网站视频教程,西安做网站魔盒,wordpress搬家步骤,南充市房地产网官方网站目录 39. 组合总和 对每一个位置进行枚举 枚举每一个数出现的次数 784. 字母大小写全排列 526. 优美的排列 结尾 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target #xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不… 目录 39. 组合总和 对每一个位置进行枚举 枚举每一个数出现的次数 784. 字母大小写全排列 526. 优美的排列 结尾 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target 找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同则两种组合是不同的。 对于给定的输入保证和为 target 的不同组合数少于 150 个。 示例 1 输入candidates [2,3,6,7], target 7输出[[2,2,3],[7]] 解释 2 和 3 可以形成一组候选2 2 3 7 。注意 2 可以使用多次。 7 也是一个候选 7 7 。 仅有这两种组合。 示例 2 输入: candidates [2,3,5], target 8 输出: [[2,2,2,2],[2,3,3],[3,5]] 示例 3 输入: candidates [2], target 1 输出: [] 提示 1 candidates.length 30 2 candidates[i] 40 candidates 的所有元素 互不相同 1 target 40 对每一个位置进行枚举 定义节点信息定义path存储路径定义sum存储当前节点的数字和。这两个变量表示一个节点位置。 定义pos表示孩子节点从哪个下表位置开始枚举。223和322是同一种情况也就是当排序好了的序列只会出现一次。因此子树每一次都是从根节点的数字开始枚举。这样保证枚举的情况都是非递减也就保证的不重复。 定义ret存储结果序列。 递归出口如果sumaim将path加入ret结果序列中return。 剪枝如果sumaim不需要再枚举直接返回return。 递归遍历整个树。 对于每一棵树根节点遍历整个树相当于遍历该节点所有的子树。 class Solution { public:vectorvectorint ret;vectorint path;int sum 0;int aim;vectorvectorint combinationSum(vectorint nums, int target) {aim target;dfs(nums, 0);return ret;}void dfs(vectorint nums, int pos) {if (sum aim) {ret.push_back(path);return;}if (sum aim)return;for (int i pos; i nums.size(); i) {path.push_back(nums[i]);sum sum nums[i];dfs(nums, i);path.pop_back();sum sum - nums[i];}} }; 将全局遍历int类型写到递归函数作为非引用参数此时不需要再手动回溯提高效率。 但是不将vector类型写到递归函数作为非引用参数因为每一次都需要开辟vector的空间效率反而可能下降。 但是每次开辟int类型的空间效率影响比较小。 class Solution { public:vectorvectorint ret;vectorint path;int aim;vectorvectorint combinationSum(vectorint nums, int target) {aim target;dfs(nums, 0, 0);return ret;}void dfs(vectorint nums, int pos, int sum) {if (sum aim) {ret.push_back(path);return;}if (sum aim)return;for (int i pos; i nums.size(); i) {path.push_back(nums[i]);dfs(nums, i, sum nums[i]);path.pop_back();}} }; 枚举每一个数出现的次数 这种情况的剪枝操作多了一个就是当pos孩子枚举的位置是nums.size()此时不需要再继续下去了。 class Solution { public:vectorvectorint ret;vectorint path;int aim;vectorvectorint combinationSum(vectorint nums, int target) {aim target;dfs(nums, 0, 0);return ret;}void dfs(vectorint nums, int pos, int sum) {if (sum aim) {ret.push_back(path);return;}if (sum aim || nums.size() pos)return;for (int i 0; i * nums[pos] aim; i) {if (i)path.push_back(nums[pos]);dfs(nums, pos 1, sum i * nums[pos]);}for (int i 1; i * nums[pos] aim; i)path.pop_back();} }; 784. 字母大小写全排列 给定一个字符串 s 通过将字符串 s 中的每个字母转变大小写我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。 示例 1 输入s a1b2 输出[a1b2, a1B2, A1b2, A1B2] 示例 2: 输入: s 3z4 输出: [3z4,3Z4] 提示: 1 s.length 12 s 由小写英文字母、大写英文字母和数字组成 定义path表示节点的序列。 定义pos表示下一个可能出现的字符也就是对应孩子节点的选取。 递归函数遍历整个树。 递归出口path.size()s.size()。 class Solution { public:vectorstring ret;string path;vectorstring letterCasePermutation(string s) {dfs(s, 0);return ret;}void dfs(string s, int pos) {if (path.size() s.size()) {ret.push_back(path);return;}// 变if (s[pos] 9 || s[pos] 0) {path.push_back(change(s[pos]));dfs(s, pos 1);path.pop_back();}// 不变path.push_back(s[pos]);dfs(s, pos 1);path.pop_back();}char change(char ch) {if (ch z ch a)return ch - 32;elsereturn ch 32;} }; 526. 优美的排列 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm下标从 1 开始只要满足下述条件 之一 该数组就是一个 优美的排列 perm[i] 能够被 i 整除 i 能够被 perm[i] 整除 给你一个整数 n 返回可以构造的 优美排列 的 数量 。 示例 1 输入n 2 输出2 解释 第 1 个优美的排列是 [1,2] - perm[1] 1 能被 i 1 整除 - perm[2] 2 能被 i 2 整除 第 2 个优美的排列是 [2,1]: - perm[1] 2 能被 i 1 整除 - i 2 能被 perm[2] 1 整除 示例 2 输入n 1 输出1 提示 1 n 15 定义ret存储结果个数。 定义check存储当前节点之前已经使用的数字。 定义pos表示孩子节点枚举的位置。 每一个节点都需要维护这一节点的定义。也就是回溯。 class Solution { public:int ret;vectorbool check;int countArrangement(int n) {check.resize(16);dfs(1, n);return ret;}void dfs(int pos, int n) {if (pos n 1) {ret;return;}for (int i 1; i n; i) {if (!check[i] (i % pos 0 || pos % i 0)) {check[i] true;dfs(pos 1, n);check[i] false;}}} }; 结尾 最后感谢您阅读我的文章希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点请随时在评论区留言。 同时不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中我将继续探讨这个话题的不同方面为您呈现更多深度和见解。 谢谢您的支持期待与您在下一篇文章中再次相遇
http://www.dnsts.com.cn/news/70424.html

相关文章:

  • 陈欧做聚美优品网站纪检网站建设
  • 深圳网站建设怎样快速人才网站建设报告
  • 梅州做网站需要多少钱天元建设集团有限公司法人
  • 海宁住房和城乡规划建设局网站网站域名怎么快速备案价格
  • 网站建设官网型好呢还是商城型游戏代理平台
  • 模仿建设网站是侵权吗怎么写wordpress
  • 做理财的网站有哪些问题什么网站做推广比较好
  • 曹妃甸网站建设农产品网络营销
  • 原创网站设计费用做网站需要什么许可证
  • 端午节网站建设目的建设民政局网站需要多少钱
  • 文献综述 php网站开发成交型网站建设公司
  • 潍坊市网站制作网站建 设方案说明书
  • 百度提交网站已删内容怎么制作软件程序
  • 太和网站建设修改wordpress上传文件大小
  • 网站的内链是什么意思延安网站建设
  • 北京网站建设网站建设局机关门户网站建设自查报告范文
  • 做淘宝客优惠券网站还是APP赚钱壹六八信息科技网站建设
  • 网站建设const是什么意思网站建设的软件是哪个
  • 百度站长平台开绿色收录通道加快网站收录进一步加强网站内容建设
  • 涟水县建设局网站凡科手机版登录
  • 池州海绵城市建设官方网站房地产开发建设网站
  • 能源科技网站建设论坛推广平台有哪些
  • tint-k主题做企业网站永久免费的自建网站
  • 上海网站建设找哪家weui wordpress模板
  • 银川 网站建设外包公司软件开发
  • 奉化网站建设深圳网站开发公司h5
  • 广州 深圳 外贸网站建设微信小程序开发要多少钱
  • dedecms网站地图模板wordpress页面修改插件
  • 一般做美食网站的产品需求怎么制作网址内容
  • 江苏省住房保障建设厅网站首页网站seo方案设计