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

潍坊网站建设 诸城wordpress cdn 阿里云

潍坊网站建设 诸城,wordpress cdn 阿里云,专门做设计文案的网站,免费的电商平台有哪些Day2493.复原IP地址力扣题目链接给定一个只包含数字的字符串#xff0c;复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数#xff08;每个整数位于 0 到 255 之间组成#xff0c;且不能含有前导 0#xff09;#xff0c;整数之间用 . 分隔。例如#…Day2493.复原IP地址力扣题目链接给定一个只包含数字的字符串复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数每个整数位于 0 到 255 之间组成且不能含有前导 0整数之间用 . 分隔。例如0.1.2.201 和 192.168.1.1 是 有效的 IP 地址但是 0.011.255.245、192.168.1.312 和 192.1681.1 是 无效的 IP 地址。思路其实还是切割问题递归参数startIndex一定是需要的因为不能重复分割记录下一层递归分割的起始位置。本题我们还需要一个变量pointNum记录添加逗点的数量。递归终止条件本题明确要求只会分成4段所以不能用切割线切到最后作为终止条件而是分割的段数作为终止条件。pointNum表示逗点数量pointNum为3说明字符串分成了4段了。然后验证一下第四段是否合法如果合法就加入到结果集里单层搜索的逻辑在for (int i startIndex; i s.size(); i)循环中 [startIndex, i] 这个区间就是截取的子串需要判断这个子串是否合法。如果合法就在字符串后面加上符号.表示已经分割。如果不合法就结束本层循环然后就是递归和回溯的过程递归调用时下一层递归的startIndex要从i2开始因为需要在字符串中加入了分隔符.同时记录分割符的数量pointNum 要 1。回溯的时候就将刚刚加入的分隔符. 删掉就可以了pointNum也要-1。代码class Solution {ListString res new ArrayList();int pointNum 0;//记录加入的.数量public ListString restoreIpAddresses(String s) {if (s.length() 12) return res;//进行剪枝操作如果长度大于12直接返回backtracking(s, 0);return res;}private void backtracking(String s, int startIndex) {if (pointNum 3) {//递归终止条件是加入了三个.if (isValid(s, startIndex, s.length() - 1)) {//看最后一个串是否合法res.add(s);}return;}for (int i startIndex; i s.length(); i) {if (isValid(s, startIndex, i)) {//合法就加入.s s.substring(0, i 1) . s.substring(i 1);pointNum;backtracking(s, i 2);//加入了一个.递归是i2s s.substring(0, i 1) s.substring(i 2);pointNum--;}else break;//如果这段不合法直接break}}private boolean isValid(String str, int head, int end) {//判断传入字符串的子串是否合法if (head end || end - head 2) return false;//注意head可能越界if (str.charAt(head) 0 end head) return false;//多位数且首位为0不合法int sum 0;for (int i head; i end; i) {if (str.charAt(i) 0 || str.charAt(i) 9) return false;//特殊字符不合法sum sum * 10 (str.charAt(i) - 0);if (sum 255) return false;//数大于255不合法}return true;} }78.子集力扣题目链接给定一组不含重复元素的整数数组 nums返回该数组所有可能的子集幂集。说明解集不能包含重复的子集。示例: 输入: nums [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]思路这个题目重点在于子集没有固定长度所以每一次递归都加入res中即可先加入空然后path中加入1进入递归加入1然后path中加入2进入递归加入12...直到加入123结束这层递归弹出3结束这层递归弹出2加入3加入13...代码class Solution {ListListInteger res new ArrayList();LinkedListInteger path new LinkedList();public ListListInteger subsets(int[] nums) {if (nums null || nums.length 0) return res;backtracking(nums, 0);return res;}private void backtracking(int[] nums, int startIndex) {res.add(new ArrayList(path));if (startIndex nums.length) return;for (int i startIndex; i nums.length; i) {path.addFirst(nums[i]);backtracking(nums, i 1);path.removeFirst();}} }90.子集II力扣题目链接给定一个可能包含重复元素的整数数组 nums返回该数组所有可能的子集幂集。说明解集不能包含重复的子集。思路和上题的区别是加上了去重的逻辑先对数组进行排序排序之后注意循环的时候如果是上层递归进来的第一次循环就直接加元素因为是第一个元素数量改变了如果不是第一个还和前一位一样那这个子集之前考虑过了就不用再看了代码class Solution {ListListInteger res new ArrayList();LinkedListInteger path new LinkedList();public ListListInteger subsetsWithDup(int[] nums) {if (nums null || nums.length 0) return res;Arrays.sort(nums);backtracking(nums, 0);return res;}private void backtracking(int[] nums, int startIndex) {res.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]) continue;//去重的逻辑在这里path.addFirst(nums[i]);backtracking(nums, i 1);path.removeFirst();}} }
http://www.hkea.cn/news/14412358/

相关文章:

  • 江北网站建设价格友情链接外链
  • 怎样在我的世界做汽车视频网站西安市未央区建设局官方网站
  • 宁波网站推广优化外包中国国内最新新闻
  • 东莞企业网站价格龙口市最新公告
  • 手机免费建站系统代码型网页制作软件
  • 刘强东自己做网站阿里巴巴官网下载app
  • 平台网站建设协议书坑梓网站建设包括哪些
  • 福州软件网站开发培训班那些网站使用vue做的
  • 博客网站seo站长之家seo综合查询
  • 怎么用手机做刷会员网站温州seo结算
  • 京东购物网站怎么做123邢台招聘信息网
  • 聚美优品返利网站怎么做网站的彩色标签怎么做的
  • 做界面网站用什么语言网站空间合同
  • 浙江网站建设商城价格三合一网站和传统网站
  • 规划和布局营销型网站的四大重点vs做网站怎么添加子页
  • 网页浏览器哪个好用淮安做网站seo
  • 有哪些网站是用php做的网络售后服务
  • 深圳网站建设素材网站iis网站属性
  • 济南建站公司价格wordpress表白模板下载
  • 网站排名下降原因西宁市网站设计企业
  • 安庆哪里做网站怎么做网站推广的论文
  • 全球搜索引擎网站图片编辑器免费
  • 免费送的广告怎么在网站上做什么是网络设计冗余设计
  • 上海网站seo设计公司怎么做网站
  • 太原网站公司网站开发快递文件
  • 怎么样才能建立网站平台wordpress um插件
  • 家教网站域名怎么做设计网站大全湖南岚鸿网站大全
  • 陕西省建设厅申报网站暴风seo论坛
  • 微信公众号微网站怎么做的中国容桂营销网站建设
  • 网站如何被百度快速收录宣传部网站建设策划书