fvdcx's blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

leetcode-queue-resconstruction-by-height

发表于 2016-12-31   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/queue-reconstruction-by-height/

  给了你n个pair,pair的一个值是人的高度,第二个是在当前位置前边身高不小于当前的人的个数,让你恢复这个pair数组,保证正确性

题目分析

  贪心法,看了下discuss区的解答,思路是这样的:先将pair排序,规则是first值大者在前,如果first相同,那么second值小的在前,然后重新构建数组,可以借助一个辅助的数组理解思路,每次从原数组中拿出一个pair,将它插入到辅助数组中的pair.second的位置,不断拿出一直到最后。

  第二种思路,不借助辅助数组,就是会需要不断手动移动元素保持数组。

阅读全文 »

leetcode-non-overlapping-intervals

发表于 2016-12-28   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/non-overlapping-intervals/

  很经典的贪心算法实例,任务选择 Activity Selection

题目分析

  第一种思路是按结束时间从小到大排序。策略是后加入的任务如果开始时间比上一任务结束时间早,那么舍弃,否则方案数加一。

  第二种思路是按开始时间排序。策略是后加入的任务如果结束时间比上一任务结束时间早,那么替换上一任务。否则要判断新加入的任务如果开始时间比上一任务结束时间晚,那么方案数加一。

阅读全文 »

leetcode-minimum-number-of-arrows-to-burst-balloons

发表于 2016-12-26   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/

  有n个气球,每个气球在x轴的左右直径端点start和end已知,每次垂直发射一根针,如果针的位置处于某个球的直径范围内,那么气球破,求最少针数能扎破所有气球

题目分析

  贪心法,先将所有气球按照end顺序排序,然后遍历,对于当前的气球end,如果下一气球start比当前end小于或者等于,那么下一气球不用单独扎破。否则end被更新,具体可以看下代码。

阅读全文 »

leetcode-word-search-ii

发表于 2016-12-25   |   分类于 算法 , leetcode   |  

题目大意

  https://leetcode.com/problems/word-search-ii/

  接续https://leetcode.com/problems/word-search/,给你的不是一个word,而是一个word数组,让你找出所有符合条件的word

题目分析

  暴力解法是直接借助word search的程序对于输入的word数组的每个单词都进行搜索,这样复杂度很高,比如”abcdef”和“abcdeg”,两个单词前边跟多位都是一样,如果调用两次DFS,显然会有大量的重复路径搜索。因此很容易想到trie树,先将word的list构建成一颗trie树,对trie树进行DFS,同时查看trie树上的路径是否在board中,具体可以看下代码。

阅读全文 »
1…171819…38
fvdcx

fvdcx

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