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

网站评论 设计这些奥运新闻得了中国新闻奖

网站评论 设计,这些奥运新闻得了中国新闻奖,上海做网站哪个好,页面模板微信题1: 指路:491. 非递减子序列 - 力扣(LeetCode) 思路与代码: 对于这个题我们应该想起我们做过的子集问题,就是在原来的问题上加一个去重操作。我们用unordered_set集合去重,集合中使用过的元…

题1:

指路:491. 非递减子序列 - 力扣(LeetCode)
思路与代码:

对于这个题我们应该想起我们做过的子集问题,就是在原来的问题上加一个去重操作。我们用unordered_set集合去重,集合中使用过的元素,我们要对结果集进行横向去重:集合中有的元素就已经被用过,弃之。代码如下:

class Solution {private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {if (path.size() >= 2 && path.size() <= nums.size()) {result.push_back(path);}unordered_set<int> uset;  // 元素去重集合    for (int i = startIndex; i < nums.size(); i++) {if ((!path.empty() && nums[i] < path.back())|| uset.find(nums[i]) != uset.end())continue;uset.insert(nums[i]);path.push_back(nums[i]);backtracking(nums, i + 1);path.pop_back();  }}
public:vector<vector<int>> findSubsequences(vector<int>& nums) {backtracking(nums, 0);return result;}
};

题2:

指路:46. 全排列 - 力扣(LeetCode)
思路与代码:

排列与组合的不同点在于:组合无顺序,排列有顺序。例如:[1, 2, 3] 和[3, 2, 1],对于组合来说二者无区别,对于排列来说,二者有区别。所以这也是单层循环逻辑中的不同所在:我们每次从数组i = 0的地方开始遍历,如果遇到未遍历过的元素则加入路径集,反之如果是已经遍历过的元素则跳过本轮循环继而寻找下一元素。其中,我们用used数组来标识元素是否用过。初始化为false,用过则赋值为true。最终当路径集大小与原数组集相等时加入最终结果集。代码如下:

class Solution {private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, vector<bool> &used) {if (path.size() == nums.size()) {result.push_back(path);return ;}for (int i = 0; i < nums.size(); i++) {  // 0开始,全排列if (used[i] == true) continue;  // 用过的元素跳过,直接取下一个元素used[i] = true;path.push_back(nums[i]);backtracking(nums, used);used[i] = false;  // 回溯path.pop_back();}}
public:vector<vector<int>> permute(vector<int>& nums) {vector<bool> used(nums.size(), false);backtracking(nums, used);return result;}
};

题3:

指路:47. 全排列 II - 力扣(LeetCode)
思路与代码:

相似于上题排列,本题不同点在于有了重复元素,这就意味着会出现重复子序列,所以需要我们做的就是去重。相似于组合总和Ⅱ的去重操作。我们将数组排序得到一个升序数组,如果相邻两个元素相等时,只需要得到一个数的子序列即可。代码如下:

class Solution {private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, vector<bool>& used) {if (path.size() == nums.size()) {result.push_back(path);return ;}for (int i = 0; i < nums.size(); i++) {if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false) continue;if (used[i]  == false) {used[i] = true;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}}
public:vector<vector<int>> permuteUnique(vector<int>& nums) {vector<bool> used (nums.size(), false);sort(nums.begin(), nums.end());backtracking(nums, used);return result;}
};

http://www.yayakq.cn/news/614982/

相关文章:

  • 免费人物素材网站sem和seo是什么职业岗位
  • 张家港建网站费用wordpress 语言包
  • 知名网站域名广州安全教育网登录平台
  • 网站开发加盟中兴建设云南有限公司网站
  • 百度优化只做移动网站没有pc站蚌埠市建设学校网站
  • 哈尔滨建设网站的免费咨询制作网站的基本步骤
  • 北京pk10网站开发北京12345微信公众号
  • 网站设计的思想七零三八零四温州论坛
  • 福州专业做网站的公司长沙新能源建站补贴
  • vue响应式网站开发清河做网站哪家好
  • 安徽省住房和城乡建设工程信息网关键词优化排名平台
  • 陕西网站建设技术方案企业网站主页 优帮云
  • 广州优化网站沈阳有什么网站
  • 徐州丰县建设局网站怎么搜索别人的wordpress模板
  • 仿朋友圈网站建设wordpress主题特色功能
  • 深圳 学习网站本地佛山顺德网站建设
  • 济南网站建设公司川芎网络html5网站欣赏
  • 网站建设网店名字联通北京网站备案
  • 万网网站如何建设python 转wordpress
  • 网站后台管理系统素材网站建设报价东莞
  • 微网站 功能模板简历
  • 网站建设洛阳中英文切换网站开发
  • wordpress区分移动站找别人做网站需要什么信息
  • 个人音乐分享网站源码佛山网站建设网络推广
  • 网站 文件夹 上传中国域名网官网查询
  • 东莞网站建设制作哪家好wordpress固定连接优化
  • 网站首页设计一般包括那三个怎么制作网站页面
  • 做通风工程上哪个网站发布传奇三端互通新开服网站
  • 村庄建设网站英文网站建设企业
  • 自适应网站如何做移动适配做网站公司在哪