代码随想录算法训练营第二八天 | 分割 子集

目录

  • 复原IP地址
  • 子集
  • 子集 II

LeetCode 93.复原IP地址
LeetCode 78.子集
LeetCode 90.子集II

复原IP地址

一些字符串的基本操作不会

s.insert(i + 1, ‘.’);

s.deleteCharAt(i + 1);

class Solution {List<String> result = new ArrayList<>();public List<String> restoreIpAddresses(String s) {StringBuilder sb = new StringBuilder(s);   // 注意  StringBuilder(s)backtracking(sb, 0, 0);return result;}private void backtracking(StringBuilder s, int startIndex, int pointNum) {if (pointNum == 3) {if (isValid(s, startIndex, s.length() - 1)) { // 结束条件result.add(s.toString());}return;}for (int i = startIndex; i < s.length(); i++) {if (isValid(s, startIndex, i)) {s.insert(i + 1, '.');backtracking(s, i + 2, pointNum + 1);s.deleteCharAt(i + 1);} else {break;}}}private boolean isValid(StringBuilder s, int start, int end) {if (start > end) {return false;}if (s.charAt(start) == '0' && start != end) {// 0开头的数字不合法return false;}int num = 0;for (int i = start; i <= end; i++) {if (s.charAt(i) > '9' || s.charAt(i) < '0') {return false;}num = num * 10 + (s.charAt(i) - '0');if (num > 255) {// 如果⼤于255了不合法return false;}}return true;}
}

子集

组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点
在这里插入图片描述
遍历这个树的时候,把所有节点都记录下来,就是要求的子集集合。

求取子集问题,不需要任何剪枝!因为子集就是要遍历整棵树。

result.add(new ArrayList<>(path)); // 放在终止条件的外面

class Solution {List<List<Integer>> result = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {backTracking(nums, 0);return result;}   private void backTracking(int[] nums, int startIndex) {result.add(new ArrayList<>(path));   // 最重要的一步,遍历整棵树,获取所有节点if (startIndex >= nums.length) {  //终止条件可不加return;}for (int i = startIndex; i < nums.length; i++) {path.add(nums[i]);backTracking(nums, i + 1);path.removeLast();}}
}

子集 II

重点: 排序、i > startIndex
跳过当前树层使用过的、相同的元素

在这里插入图片描述

class Solution {List<List<Integer>> result = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);backTracking(nums, 0);return result;}private void backTracking(int[] nums, int startIndex) {result.add(new ArrayList<>(path));if (startIndex >= nums.length) return;for (int i = startIndex; i < nums.length; i++) {// 跳过当前树层使用过的、相同的元素if (i > startIndex && nums[i] == nums[i - 1]) {// path.removeLast();continue;}path.add(nums[i]);backTracking(nums, i + 1);path.removeLast();}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp canvas游标卡尺效果

效果 根据公司业务仿照写的效果。原项目从微信小程序转uniapp,未测试该效果在android端效果。 uniapp直接使用canvas不可做子组件,否则无效果显示,其次显示时要考虑页面渲染超时的问题。 如效果所见,可以设置取值精度。 gitee地址:project_practice: 项目练习 - Gitee.…

【sentinel流量卫兵配置持久化到Nacos】

sentinel流量卫兵配置持久化到Nacos 概述&#xff1a; 一、添加配置二、配置说明限流规则配置&#xff1a;降级规则配置&#xff1a;热点规则配置&#xff1a;授权规则配置&#xff1a;系统规则配置&#xff1a; 三、服务整合 概述&#xff1a; 控制台配置的参数&#xff0c;默…

python 动态显示数据。

界面显示动态的数据。 from time import sleep import serialimport tkinter as tklis[1,10,40] # 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率&#xff0c;根据实际情况进行调整# 创建窗口和画布 window tk.Tk() canvas tk.Canvas(window, width400, heig…

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

参考代码 /************************************************************************************************** * file usart_async_tx_no_int_rx_rxneint.c * brief 异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将 * …

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测 目录 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预…

JS 基本语句

函数调用&#xff0c;分支&#xff0c;循环&#xff0c;语句示例。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

elementPlus实现动态表格单元格合并span-method方法总结

最近在做PC端需求的时候&#xff0c;需要把首列中相邻的同名称单元格合并。 我看了一下elementPlus官网中的table表格&#xff0c;span-method可以实现单元格合并。 我们先看一下官网的例子&#xff1a; 合并行或列 多行或多列共用一个数据时&#xff0c;可以合并行或列。 …

Docker Compose实例

目录 一、前提说明 二、简单的Docker容器部署案例 1. Dockerfile 配置 2. docker-compose.yml 配置 3. application.properties 配置 4. pom.xml 配置 5. 上传文件 6. 创建基础Docker镜像 7. docker-compose.yml编排 8. 停止并删除容器编排 一、前提说明 在配置好Do…

Swin-UMamba:结合基于ImageNet的预训练和基于Mamba的UNet模型

摘要 https://arxiv.org/pdf/2402.03302v1.pdf 准确的医学图像分割需要整合从局部特征到全局依赖的多尺度信息。然而&#xff0c;现有方法在建模长距离全局信息方面面临挑战&#xff0c;其中卷积神经网络&#xff08;CNNs&#xff09;受限于其局部感受野&#xff0c;而视觉转换…

(一)Spring 核心之面向切面编程(AOP)—— 配置及使用

目录 一. 前言 二. 如何理解 AOP 2.1. AOP 是什么 2.2. AOP 术语 2.3. Spring AOP 和 AspectJ 是什么关系 2.3.1. AspectJ 是什么 2.3.2. Spring AOP 和 AspectJ 是什么关系 2.3.3. 动态织入和静态织入 三. AOP 的配置方式 3.1. XML Schema 配置方式 3.2. AspectJ …

CSS综合案例4

CSS综合案例4 1. 综合案例 我们来做一个静态的轮播图。 2. 分析思路 首先需要加载一张背景图进去需要4个小圆点&#xff0c;设置样式&#xff0c;并用定位和平移调整位置添加两个箭头&#xff0c;也是需要用定位和位移进行调整位置 3. 代码演示 html文件 <!DOCTYPE htm…

FLIP解读

title: FLIP解读 mathjax: true toc: true date: 2024-02-06 17:22:20 categories: Machine Learning tags:CLIPMasked AutoencodersContrastive Learning FLIP由CLIP改进而来&#xff0c;其思想非常简单&#xff0c;通过在图片侧mask掉相当比例的patch&#xff08;无须重构pa…