摘要: 一:解题思路 方法一:可以采用前面讲解的类似的2的幂来做这道题,Time:O(log_3(n)),Space:O(1) 方法二:整数最大值,y=2^31-1。3^a<=y,那么a<=log_ay ==> a<=ln(y)/ln(3),计算出a为19.所以MAX_NUM=3^19。Time:O(1), 阅读全文
posted @ 2020-04-03 21:00 repinkply 阅读(136) 评论(0) 推荐(0)
摘要: 一:解题思路 方法一:只要原始数字为2的倍数,不断的去除以2,直到最后结果为1.Time:O(log(n)),Space:O(1) 方法二:我们可以发现,当一个数中有且仅有某一位二进制为1的时候,那么这个数就肯定是2的幂。所以我们可以看n&(n-1)==0来判断这个数是否为2的幂。Time:O(1) 阅读全文
posted @ 2020-04-03 20:31 repinkply 阅读(592) 评论(0) 推荐(0)
摘要: 一:解题思路 Time:O(1.3^n)或O(2^n) Space:O(1.3^n)或O(2^n) 二:完整代码示例 (C++版和Java版) C++: class Solution { public: string countAndSay(int n) { if (n < 1) return "" 阅读全文
posted @ 2020-04-03 19:59 repinkply 阅读(186) 评论(0) 推荐(0)
摘要: 一:解题思路 这个题的本质和之前做过的单链表是否有环差不多。 方法一:利用一个集合set不断的变化数字,并将数字加入到集合set中,如果发现变换的数字最终为1则返回true,如果发现集合中以及存在之前变换的数字,则返回false。Time:O(1),Space:O(1) 方法二:快慢指针法,快指针每 阅读全文
posted @ 2020-04-03 16:58 repinkply 阅读(376) 评论(0) 推荐(0)
摘要: 一:解题思路 Time:O(log_5(n)),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: class Solution { public: int trailingZeroes(int n) { int count = 0; while (n > 0) { n /= 阅读全文
posted @ 2020-04-03 16:10 repinkply 阅读(127) 评论(0) 推荐(0)