93.复原IP地址
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:首先字符串长度不在4到12区间内的都不满足要求。然后需要一个计数器,计数器到3的时候表示到达了最后一段,判断当前位置到字符串末尾的子字符串是否正确。递归的时候也要判断当前分割的字符串是否是正确的,正确的需要在子字符串之后插入小数点,进入递归和回溯的流程。判断流程是,先判断截取的开始位置是否大于末尾,然后判断是否是0开头而不是单独的0,最后判断是否在0到255之间。
代码:
注:递归的时候,是i+2而不是i+1,因为在子字符串之后加入了'.'。
78.子集
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:0.5h
思路:和常规的回溯模板差不多,但是需要注意每次递归开始,都要把当前path放入结果中。因为求的是所有的子集,也就是树的所有结点而不只是叶子节点。
代码:
注:path要先放入res中,再判断是否到达终止条件,否则会跳过包含数组最后一个元素的子集。也不能把这个放入res的过程放入if中,因为要保证每次递归都要把当前子集放入res。
90.子集II
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:0.5h
思路:是40.组合总和II和78.子集的结合。一个是终止条件前把path放入res中,一个是判断树层重复。注意要先对数组排序。
代码: