day25

1、491非递减子序列:由于题目给出的是个无序可重复数组,要求它的自增子序列,所以并不能采用之前的去重逻辑(先对数组排序)。本题的去重逻辑也是针对树层的,可以用一个unordered_set(无序唯一)来记录本层使用过的元素,在给出的数组元素范围比较小的时候,还可以用数组来做哈希提高效率,在处理前先检查一下该元素是否有被使用过。注意,unordered_set必须声明在回溯函数中,且此次的去重可以不需要回溯。用外部used并不能达到去重的目的!因为不能对原数组进行排序也就没有办法对树层去重复!
2、46全排列:排列问题由于顺序不同,即便元素完全相同也算是不同的结果,因此不再使用startIndex去排除掉前面取过的元素,直接使用used数组对其进行标记,避免在取一个子集时取到同一元素。
3、47全排列 II:与上一题不同的是,原始数组里存在值相同的元素,所以要对树层进行去重。要对原始数组进行排序,并检查在本层for循环中该值是否已经使用。

今天把无序关联式容器学了下,还把堆排复习了一下,写了堆排模板的代码。

#牛客创作赏金赛#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务