408算法题leetcode--第31天

embedded/2024/10/18 3:30:39/

93. 复原 IP 地址

题目地址:93. 复原 IP 地址 - 力扣(LeetCode)

题解思路:回溯

时间复杂度:O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式

空间复杂度:O(n)

代码:

class Solution {
public:vector<string>ret;bool isValid(string& str, int start, int end){if(end < start){return false;}if(str[start] == '0' && start != end){return false;}int num = 0;for(int i = start; i <= end; i++){num = 10 * num + (str[i] - '0');if(num > 255){return false;}}return true;}void backtrack(string& s, int start, int point){// 只能有三个小数点if(point == 3){if(isValid(s, start, s.size() - 1)){ret.push_back(s);}return ;}int size = s.size();for(int i = start; i < size; i++){if(isValid(s, start, i)){s.insert(s.begin() + i + 1, '.');  // 插入小数点point++;backtrack(s, i + 2, point);point--;s.erase(s.begin() + i + 1);} else {break;}}}vector<string> restoreIpAddresses(string s) {// 剪枝if(s.size() < 4 || s.size() > 12) return ret;backtrack(s, 0, 0);return ret;}
};

78. 子集

题目地址:78. 子集 - 力扣(LeetCode)

题解思路:找子集问题

时间复杂度:O(n * 2n),n个数,每个数考虑选or不选(2n)

空间复杂度:O(n)

代码:

class Solution {
public:vector<vector<int>>ret;vector<int>v;void backtrack(vector<int>&nums, int start){ret.push_back(v);  // 子集if(start >= nums.size()){return ;}int size = nums.size();for(int i = start; i < size; i++){v.push_back(nums[i]);backtrack(nums, i + 1);v.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {// 子集问题,找到所有节点集合backtrack(nums, 0);return ret;}
};

http://www.ppmy.cn/embedded/126394.html

相关文章

elasticsearch 8.2 版本如何设置config/elasticsearch.yml

在Elasticsearch 8.2版本中,`config/elasticsearch.yml`文件是用于配置Elasticsearch的主要配置文件。你可以通过编辑这个文件来设置各种配置选项。以下是一些常见的配置选项及其设置方法: ### 1. 基本配置 #### 集群名称 ```yaml cluster.name: my-cluster ``` #### 节点…

数据结构-4.5.KMP算法(旧版上)-朴素模式匹配算法的优化

朴素模式匹配算法最坏的情况&#xff1a; 一.实例&#xff1a; 第一轮匹配失败&#xff0c;开始下一轮的匹配&#xff1a; 不断的操作&#xff0c;最终匹配成功&#xff1a; 如上述图片所述&#xff0c;朴素模式匹配算法会导致时间开销增加&#xff0c; 优化思路&#xff1a;主…

【CSS Tricks】试试新思路去处理文本超出情况

目录 引言一、常规套路1. 单行文本省略2. 多行文本省略 二、新思路美化一下1. 单行/多行文本隐藏2. 看下效果 三、总结 引言 本篇为css的一个小技巧 文本溢出问题是一个较为常见的场景。UI设计稿为了整体的美观度会将文本内容限制到一定范围内&#xff0c;然而UI设计阶段并不能…

找不到#include “ros/ros.h“

如果在编译过程中找不到 #include "ros/ros.h"&#xff0c;通常是因为你的 ROS 环境变量没有正确设置&#xff0c;或者缺少必要的依赖。以下是排查和解决问题的方法&#xff1a; 1. 检查 ROS 安装 确保你已经正确安装了 ROS1&#xff0c;并且安装了必要的开发工具包…

react理念(一)

react react理念 当遇到大计算量的操作或者设备性能不足的页面掉帧&#xff0c;会导致卡顿&#xff0c;发送网路请求的时候&#xff0c;需要等待数据返回才能进一步操作导致不能快速响应。叫做cpu的瓶颈和io的瓶颈 cpu的瓶颈 主流浏览器刷新频率为60hz(requestAnimation), …

【数据结构】string(C++模拟实现)

string构造 string::string(const char* str):_size(strlen(str)) {_str new char[_size 1];_capacity _size;strcpy(_str, str); }// s2(s1) string::string(const string& s) {_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._cap…

解决 Django 数据库迁移报错:无法添加带有 `auto_now_add=True` 的字段20241008

解决 Django 数据库迁移报错&#xff1a;无法添加带有 auto_now_addTrue 的字段 引言 在使用 Django 进行开发时&#xff0c;数据库迁移是不可避免的一部分。然而&#xff0c;添加新字段特别是带有 auto_now_addTrue 的日期时间字段时&#xff0c;可能会遇到一些令人头疼的错…

『Mysql进阶』Mysql SQL语句性能分析(七)

目录 什么是Profile&#xff1f; 开启Profile功能 基本使用 分析案例 什么是Profile&#xff1f; Query Profiler是 MySQL 自带的一种 Query 诊断分析工具 &#xff0c;通过它可以分析出一条 SQL 语句的 硬件性能瓶颈 在什么地方。 通常我们是使用的 explain &#xff0c;…