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

代码随想录三刷day26

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣40. 组合总和 II
  • 二、力扣131. 分割回文串
  • 三、力扣93. 复原 IP 地址
  • 四、力扣78. 子集


前言


如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点!

一、力扣40. 组合总和 II

class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();boolean[] flag;public List<List<Integer>> combinationSum2(int[] candidates, int target) {flag = new boolean[candidates.length];Arrays.sort(candidates);fun(candidates,target,0,0);return res;}public void fun(int[] candidates, int target,int index, int sum){if(sum >= target){if(sum == target){res.add(new ArrayList<>(path));}return;}for(int i = index; i < candidates.length; i ++){if(i > 0){if(sum + candidates[i] > target){return;}if(candidates[i] == candidates[i-1] && !flag[i-1]){continue;}}path.add(candidates[i]);flag[i] = true;fun(candidates,target,i+1,sum+candidates[i]);path.remove(path.size()-1);flag[i] = false;}}
}

二、力扣131. 分割回文串

在这里插入代码片class Solution {List<List<String>> res = new ArrayList<>();List<String> path = new ArrayList<>();public List<List<String>> partition(String s) {fun(s,0);return res;}public void fun(String s, int index){if(index >= s.length()){res.add(new ArrayList<>(path));return;}for(int i = index; i < s.length(); i ++){if(flag(s,index,i)){String str = s.substring(index,i+1);path.add(str);}else{continue;}fun(s,i+1);path.remove(path.size()-1);}}public boolean flag(String str,int low, int high){for(int i = low, j = high; i < j ; i ++, j --){if(str.charAt(i) != str.charAt(j)){return false;}}return true;}
}

三、力扣93. 复原 IP 地址

class Solution {List<String> res = new ArrayList<>();List<String> path = new ArrayList<>();public List<String> restoreIpAddresses(String s) {fun(s,0);return res;}public void fun(String s,int index){if(index == s.length()){StringBuilder sb = new StringBuilder();for(String s1 : path){sb.append(s1).append(".");}sb.deleteCharAt(sb.length()-1);res.add(sb.toString());return;}for(int i = index; i < s.length(); i ++){String temp = s.substring(index,i+1);if(flag(i,s,temp)){path.add(temp);}else{continue;}fun(s,i+1);path.remove(path.size()-1);}}public boolean flag(int index,String s,String temp){if(temp.length() > 3){return false;}int a = Integer.parseInt(temp);if(path.size() >= 4 && index == s.length()-1){return false;}if(temp.length() == 2 && temp.charAt(0) == '0'){return false;}if(temp.length() == 3 && temp.charAt(0) == '0'){return false;}if(temp.length() == 3 && a > 255){return false;}if(index == s.length()-1 && path.size() != 3){return false;}return true;}
}

四、力扣78. 子集

class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {fun(nums,0);return res;}public void fun(int[] nums, int index){res.add(new ArrayList<>(path));if(index >= nums.length){return;}for(int i = index; i < nums.length; i ++){path.add(nums[i]);fun(nums,i+1);path.remove(path.size()-1);}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 本地部署推理TextDiffuser-2:释放语言模型用于文本渲染的力量
  • 为什么不用 index 做 key?
  • 使用 Docker 部署 Next Terminal 轻量级堡垒机
  • 项目解决方案:视频监控接入和录像系统设计方案(下)
  • 【Python从入门到进阶】50、当当网Scrapy项目实战(三)
  • Midjourney绘图欣赏系列(七)
  • [2023年]-hadoop面试真题(一)
  • 【py】加载sdk文件夹中的dll
  • 蓝桥杯2023年-平方差(数学)
  • 谷歌开源的LLM大模型 Gemma 简介
  • Elasticsearch 通过索引阻塞实现数据保护深入解析
  • 网络安全: Kali Linux 进行 SSH 渗透与防御
  • pyqt线程正确使用
  • MyBatisPlus理解
  • 代码随想录 贪心算法-简单题目
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2019.2.20 c++ 知识梳理
  • CentOS6 编译安装 redis-3.2.3
  • CSS相对定位
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • iOS小技巧之UIImagePickerController实现头像选择
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS 面试题总结
  • Python 反序列化安全问题(二)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • rabbitmq延迟消息示例
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SQL 难点解决:记录的引用
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 基于组件的设计工作流与界面抽象
  • 简单实现一个textarea自适应高度
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何编写一个可升级的智能合约
  • 使用agvtool更改app version/build
  • 思否第一天
  • 为视图添加丝滑的水波纹
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #数据结构 笔记三
  • (2.2w字)前端单元测试之Jest详解篇
  • (分类)KNN算法- 参数调优
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .apk 成为历史!
  • .gitignore文件忽略的内容不生效问题解决
  • .net Signalr 使用笔记
  • .NET 常见的偏门问题
  • .NET 反射 Reflect
  • .Net多线程Threading相关详解