fvdcx's blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

leetcode-longest-consecutive-sequence

发表于 2017-01-25   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/flatten-binary-tree-to-linked-list/

  给你一个无序的数组,找出其中的一个序列(不要求按照原数组的顺序),序列满足连续(类似1,2,3,4,5…..),问序列的最大长度。要求时间复杂度是O(n)

题目分析

  这道题可以利用并查集做,遍历数组,将每个数n和n-1归为一组,最后对出现次数进行统计计算。但是并查集每次操作的复杂度是Ackerman函数的反函数,此反函数在算法复杂度分析时,可以近似视为常数,所以总复杂度O(n)。

  还有一种简单的思路,思路参考这里:https://discuss.leetcode.com/topic/6148/my-really-simple-java-o-n-solution-accepted,map.get(i)含义就是以中间包含i元素的最大的序列长度,那么每次在数组中遇到一个数字n,就获取map.get(n-1)和map.get(n+1),根据这这两个值更新n处的值,但也要更新n-left和n+right值。

阅读全文 »

leetcode-flatten-binary-tree-to-linked-list

发表于 2017-01-24   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/flatten-binary-tree-to-linked-list/

  把一颗二叉树转换成链表,链表中的元素顺序是二叉树的前序遍历,要求空间复杂度是O(1)

题目分析

  可以用递归来做(可能不是最优的方法)。先把左右子树分别flatten,然后利用循环把左子树的叶子节点找到,把右子树的头节点接过来。

阅读全文 »

leetcode-palindrome-partitioning-ii

发表于 2017-01-23   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/palindrome-partitioning-ii/

  划分一个字符串,保证每个字符串都是回文串,求需要将原字符串切割几刀。

题目分析

  接上题:https://leetcode.com/problems/palindrome-partitioning/,我的这道题博客地址在这里。但是不能深度优先搜索,要在search方法中加入记忆化优化,注意search方法返回的划分的子串数,所以结果要减一。

阅读全文 »

leetcode-palindrome-partitioning

发表于 2017-01-23   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/palindrome-partitioning/

  对一个字符串做划分,要求划分后的每个子串都是回文串,例如"aab",输出:

1
2
3
4
[
["aa","b"],
["a","a","b"]
]

题目分析

  深度优先搜索,注意check方法检查一个字符串是否是回文,利用记忆化做了优化。

阅读全文 »
1…8910…38
fvdcx

fvdcx

149 日志
14 分类
20 标签
GitHub
© 2015 - 2017 fvdcx
由 Hexo 强力驱动
主题 - NexT.Pisces