fvdcx's blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

leetcode-min-stack

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

题目大意

  https://leetcode.com/problems/min-stack/

  让你实现一个栈,操作有压入,弹出,获取栈顶,以及获取最小值,要求每种时间复杂度为O(1)

题目分析

  本题参考了disscuss区的巧妙解法,竟然用了一个数组(栈)就实现了,巧妙之处在与压栈和出栈,每次压栈时都要检测min是否会被更新,如果会被更新,则先要把旧的min压入栈,然后再压入元素的值。出栈时要检测min和栈顶是否相同,如果相同说明min的值需要用旧的值替代。还要注意,压栈判断条件if (x <= min)必须有等号,如果没有等号,意味着等于min的元素进栈时只压栈了一次,而出栈判断min == top时要出栈两次,这就造成了不正确

阅读全文 »

leetcode-number-of-islands

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

题目大意

  https://leetcode.com/problems/number-of-islands/

  01矩阵中“小岛”的个数,所谓“小岛”指的是被0包围的1

题目分析

  简单的BFS即可,DFS或者并查集也能做。

阅读全文 »

leetcode-convert-sorted-list-to-balanced-tree

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

题目大意

  https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/

  将一个有序链表转换成一颗平衡二叉树

题目分析

  由于是链表,因此不能随机访问某个index的值。考虑用递归的方法做,注意到有序链表的序列实际上是二叉树的中序遍历的结果。可以定义一个根据头节点获取链表长度的方法,再定义一个全局的下次作为head点的指针,关键在于sortedListToBST中递归的思路不是很容易想,具体可以看下代码。

阅读全文 »

leetcode-can-i-win

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

题目大意

  https://leetcode.com/problems/can-i-win/

  一种博弈游戏,甲乙二人分别从1….n中取数字,要求不重复取,有一个公共的累积和sum,每次两人取完数字之后sum值增加,如果谁某次取完之后sum>=total,那么他赢了。n和total都是题目给定的值。假定二人都是足够的聪明,你是甲作为先手,判断你是否能够取胜。

题目分析

  记忆化搜索,注意n个数字取或不取的状态要用一个位保存,map中key是sum和s,value是true/false,至于如何保证根据sum和s生成key的唯一性,注意到n不超过20,total不超过300,n和total拼接成的二进制串也不会超过32,因此用位移并拼接就可以了。更详细的步骤可以看下注释。

阅读全文 »
1…232425…38
fvdcx

fvdcx

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