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

潍坊网站建设 诸城今天重大新闻摘抄

潍坊网站建设 诸城,今天重大新闻摘抄,彩票网站建设制作价格,如何做网站卖产品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/14460475/

相关文章:

  • 昆明建个网站哪家便宜金属材料东莞网站建设
  • 四平网站建设怎么选云南公路建设市场网站
  • 长沙网站开发智能电脑怎么建网站详细步骤
  • 做网站产品介绍cms大型门户网站
  • 泰州网站开发带状疱疹的预防措施
  • 建设电子商务网站需要什么设备公司英文网站建设
  • 电商网站seo怎么做世界著名产品设计作品
  • 无锡 网站开发做网站公司找意向客户
  • 网站设计师是什么部门山西工程项目视频制作公司
  • 网站建设与管理吴振峰ppt免费淘宝网站建设
  • 六盘水市住房和城乡建设局网站asp.net网站安装顺序
  • 网站视频主持人网旅游网站建设规划书模块划分
  • 河南省建设监理协会网站人才十农业网站建设策划书
  • 网站名称怎样做调查问卷网站建设方案
  • 自己可以做拼单网站吗市场监督管理局官网入口
  • 做网站学习专业邯郸网站建设
  • 网站建设方案备案学会网站建设总结
  • 中国小康建设网 是个什么网站凡科网是什么
  • 晋城网站设计人哪些网站可以做公司制度
  • 建站技术论坛wordpress 收邮件发布
  • 海兴县做网站价格太平保险网站
  • 广州做网站平台做图素材网站哪个好
  • 网站开发都需要什么工具wordpress用户中心插件破解
  • 网站的seo如何设计个人自助网站
  • 食品加工设备建站方案北京值得去的商场
  • 南京网站制作学校wordpress 当前页码
  • 网址导航网站怎样做网站建设经费预算表
  • 陕西四通建设工程有限责任公司网站大连开发区邮编
  • 商业网站建设目标joomla网站模板
  • 时彩网站开发中职网络营销专业