代码随想录第24天 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II

news2024/9/26 1:27:47

93.复原IP地址

      /**
       * @param {string} s
       * @return {string[]}
       */ let road = [];
      let path = [];
      var restoreIpAddresses = function (s) {
        road = [];
        if (s.length > 12 || s.length < 4) return [];//开始就判断,长度大于12的字符窜或者小于4的都不行
        backtracking(s, 0);
        return road;
      };

      let backtracking = function (s, er) {
        if (er === s.length) { //结束条件
          if (path.length === 4) road.push(path.join(".")); //只能4个
          return;
        }
        for (let i = er; i < s.length && i < er + 3; i++) {  //i只能加三位数
          if (path.length === 1 && (s.length - er > 9 || s.length - er < 3))   //分割了一个,剩下的3个分
            continue;
          if (path.length === 2 && s.length - er > 6) continue;
          if (path.length === 3 && s.length - er > 3) continue;
          if (ip(s, er, i)) {
            let ss = s.slice(er, i + 1);
            path.push(ss);
          } else continue;
          backtracking(s, i + 1);
          path.pop();
        }
      };
      let ip = function (s, start, end) {//判断是否满足
        if (s[start] === "0" && start !== end) return false;
        let num = Number(s.slice(start, end + 1));
        if (num > 255) return false;
        return true;
      };


思想

在这里插入图片描述

困难

注意条件,和剪枝,可以加一些条件减少时间空间复杂度
然后其实有个条件,必须是数字,但是我在 let num = Number(s.slice(start, end + 1));
if (num > 255) return false;这步做了

78.子集

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
  let road = [];
  let path = [];
  
var subsets = function(nums) {
  road = [[]]  //road会有之前的数据,所以需要每次清空road
  brektraning(nums, 0);
  return road;
};
  const brektraning = function (nums, er) {
    // if (er===nums.length) {  //收割
    //   return;
    // }
    for (let i = er; i < nums.length; i++) { 
      path.push(nums[i]);
      brektraning(nums, i + 1);
      road.push([...path]);  //push不能为数组,所以只能先展开
      path.pop();
    }
  };

想法

在这里插入图片描述
在这里插入图片描述


困难


收获

子集是收集树形结构中树的所有节点的结果,而组合问题、分割问题是收集树形结构中叶子节点的结果。


90.子集II

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
  let road = [];
  let path = [];
  
var subsetsWithDup = function(nums) {
  road = [[]]  //road会有之前的数据,所以需要每次清空road
   nums.sort((a, b) => a - b); // 排序
  brektraning(nums, 0);
  return road;
};
  const brektraning = function (nums, er) {
    // if (er===nums.length) {  //收割
    //   return;
    // }
    for (let i = er; i < nums.length; i++) { //剪枝
      path.push(nums[i]);
      brektraning(nums, i + 1);
      road.push([...path]);  //push不能为数组,所以只能先展开
      path.pop();
        while (nums[i + 1] && nums[i] === nums[i + 1]) i++; //去重
    }
  };


第一想法

和 40.组合总和II 的思想一样,没用脑子cv就好
while (nums[i + 1] && nums[i] === nums[i + 1]) i++; 放后面是因为,不影响第一个2的子集,但是后面2已经用过开头了,不能再一次了
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

漏洞复现 || Apache RocketMQ 远程代码执行

技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的…

Spring原码学习第一篇:Spring概述

1、Spring源码概述图&#xff1a; 2、一些重要的接口 3、Spring获取对象的过程 BeanDefinition中实现的方法&#xff0c;把xml中定义的对象封装为一个对象&#xff0c;方便后面处理 4、BeandefinitionReader BeandefinitionReader作为一个抽象层来处理配置文件&#xff0c;定…

unity插件 -- UiEffect for UGUI

目录 1.简介 2. 脚本 3. 在线观看Demo 4.安装要求 5.使用方法 6.使用场景 7.插件下载 1.简介 UIEffect-upm是Unity中的一个插件&#xff0c;用于实现各种UI特效。它提供了许多常见的UI效果&#xff0c;如模糊、描边、阴影、发光等&#xff0c;可以轻松地为UI元素增添动…

Vue3子组件向父组件传递消息

父子组件之间的通信&#xff1a;props与emit 通常提到props&#xff0c;都会想到的是父组件给子组件传值&#xff1b;提到emit为子组件向父组件发送消息&#xff0c;但其实&#xff0c;props也可以使子组件向父组件传递消息 方式为在父组件中通过为子组件绑定属性&#xff0c…

代谢组学数据分析及网络药理学研究技术与实践

代谢组学是近年发展快速的一门学科&#xff0c;目前在医学、植物学、微生物学、毒理学、药物研发等多个领域中得到了广泛的应用。如何从复杂的代谢组学数据中提取出有价值的信息&#xff0c;筛选出潜在的生物标志物成为近年来代谢组学研究的热点和难点。网络药理学能够通过计算…

基于STM32的熏艾式空气消毒装置设计与实现(华为云IOT)

一、前言 艾叶自古以来都在中医中占据着重要地位,特别是在那个瘟疫横行、卫生设施条件落后的时代。而在如今的疫情时代,艾叶的实用功能依旧可以为我们所用。考虑到技术的发展,我们是否可以利用现代技术的高效性来对艾叶进行更加科学利用呢?可编程的嵌入式系统与传感器结合…

Linux学习之管道

管道和信号一样&#xff0c;也是进程通信的方式之一。匿名管道&#xff0c;也称为管道符&#xff08;“|”&#xff09;&#xff0c;用来把上一个命令的输出当成下一个命令的输入。使用vim pipeContent.txt&#xff0c;把下边的内容 1 11 2 22 3 33 4 44 5 6 7 8 9写到Redirec…

基于simulink从视频序列创建马赛克(附源码)

一、前言 此示例演示如何从视频序列创建马赛克。视频拼接是将视频帧拼接在一起以形成场景综合视图的过程。生成的马赛克图像是视频数据的紧凑表示。视频马赛克块通常用于视频压缩和监控应用。 此示例说明如何使用“角检测”块、“估计几何变换”块、“投影变换”块和“合成”…

Vue3+Vite+Pinia+Naive后台管理系统搭建之四:Naive UI 组件库的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门Vue3.0 基础入门快速入门。 UI 组件请参考官网&#xff1a;Naive Ui 官网 1. 安装依赖 yarn add naive-ui -D // or npm install naive-ui -D 2. 在 SFC (单文件组件) 中使用 直接引入&#xff08;推…

UnsatisfiedDependencyException: Error creating bean with name “dataSource” 异常排查

在写demo过程中&#xff0c;出现此异常&#xff0c;自己是按照以下步骤一个一个进行排查最终解决问题&#xff0c;希望能帮到碰到此问题的同学 : ) 1. 检查配置文件是否设置正常&#xff0c;是否配置了扫描类和配置文件路径 2. 检查是否设置MapperScan注解 3. 检查驱动版本和s…

c语言的变量

变量 我们可以直接声明一个变量&#xff0c;并利用这些变量进行基本的运算&#xff0c;声明格式为: 数据类型 变量名称 初始值&#xff1b; // 其中初始值可以不用定义变量时设定 // 是赋值操作&#xff0c;可以将等号后面的值赋值给前面的变量&#xff0c;等号后面可以直接…

SpringMVC集合

目录 SpringMVCSpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 SpringMVC入门&#xff08;1&#xff09;引入依赖&#xff08;2&#xff09;配置web.xml&#xff08;3&#xff09;创建请求控制器&#xff08;4&#xff09;创建SpringMVC的配置文件&#xff08…

[Docker] Docker学习和基本配置部署(一)

前言&#xff1a; Docker的作用是通过容器化技术实现快速、可移植和可扩展的应用程序部署与管理。 文章目录 引言容器化的基本概念Docker的背景产生Docker 配置和命令详解1. 安装 Docker2. Docker 配置3. Docker 命令 Docker的核心组件Docker在软件开发和云计算中的重要性Docke…

rancher

rancher&#xff08;牧场主&#xff09;简介&#xff1a; Rancher是一个开源的容器管理平台&#xff0c;它提供了一套完整的解决方案来管理和部署容器集群。它的目标是简化容器化应用的部署、管理和运维工作。 Rancher使用了开放标准的容器技术&#xff0c;如Docker和Kubernete…

C/C++实现高并发http服务器

http高并发服务器实现 基础知识 html&#xff0c;全称为html markup language&#xff0c;超文本标记语言。 http&#xff0c;全称hyper text transfer protocol&#xff0c;超文本传输协议。用于从万维网&#xff08;WWW&#xff1a;World Wide Web&#xff09;服务器传输超…

绝了!贸易企业增值税高,税负重怎么办?这些处理技巧请收藏!

绝了&#xff01;贸易企业增值税高&#xff0c;税负重怎么办&#xff1f;这些处理技巧请收藏&#xff01; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 贸易企业始终都逃脱不了税负重的问题&#xff0c;这是因为贸易企业自身的行业…

ChatGPT潮落 资金逃离AI概念股

ChatGPT访问量首次出现负增长&#xff0c;寒气传导到证券市场。 上半年经历暴涨的一众AI概念股偃旗息鼓&#xff0c;蓝色光标、三六零、昆仑万维等知名个股均较高点跌超30%。微软、英伟达也未能幸免&#xff0c;同样有不同程度回调。 回顾这波过山车般的市场表现&#xff0c;…

【JavaEE】你真的了解Cookie和Session吗?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、什么是Cookie 二、什么是Session 三、Cookie和Session有什么不同 四、关于Sessionid 五、关于浏览器禁止Cookie 六、如何考虑分布式Session问题&#xff1f; 七、Serv…

springboot请求重定向失败问题解决方案

今天晚上在写登录页面时&#xff0c;发现自己的首页无法正常访问&#xff0c;用户名和密码正常的情况下还是无法访问首页。于是开始进行debug&#xff0c; 程序执行至此处时无任何异常&#xff0c;但是就是在进行重定向页面时出现了404&#xff0c;在检查导航栏后发现地址栏也发…

做好POC测试 需要重点关心的5点

在日常POC测试过程中&#xff0c;往往遇到&#xff1a;测试计划时间结束才达到测试目标&#xff0c;导致结果未记录&#xff1b;不了解测试达标要求&#xff0c;未达到测试要求&#xff0c;后期大量的工作进行补救&#xff1b;测试遇到的问题&#xff0c;没有充分地相互沟通等问…