LeetCode题解(0788):判断垂直旋转后仍有效的数字数量(Python)
发布日期:2021-06-29 19:54:17
浏览次数:2
分类:技术文章
本文共 2391 字,大约阅读时间需要 7 分钟。
题目:(简单)
标签:字符串、进制计算
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( l o g N ) O(logN) O(logN) | 108ms (57.60%) |
Ans 2 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( l o g N ) O(logN) O(logN) | 104ms (62.36%) |
Ans 3 (Python) | O ( 1 ) O(1) O(1) | O ( 1 ) O(1) O(1) | 32ms (100.00%) |
LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。
解法一(暴力算法):
def rotatedDigits(self, N: int) -> int: ans = 0 for i in range(1, N + 1): s = str(i) n = "" for c in s: if c in ["0", "1", "8"]: n += c elif c == "5": n += "2" elif c == "2": n += "5" elif c == "6": n += "9" elif c == "9": n += "6" else: break else: if int(n) != i: ans += 1 return ans
解法二(更好的暴力方法):
def rotatedDigits(self, N: int) -> int: ans = 0 for i in range(1, N + 1): s = str(i) differ = False for c in s: if c in ["2", "5", "6", "9"]: differ = True elif c in ["3", "4", "7"]: break else: if differ: ans += 1 return ans
解法三(进制转换):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09rnMhQg-1593597263365)(LeetCode题解(0788)]:截图1.png)
【思路】
0、1、2、5、6、8、9分别对应七进制的0、1、2、3、4、5、6;0、1、8分别对应三进制的0、1、2。
例如:
10 —— 七进制10转换为10,三进制10转换为3;结果:7 - 3 = 4
12 ——七进制12转换为9,三进制11转换为4;结果:9 - 4 = 5
细节:如果在某一位上出现了不存在于以上对应中的数,则该位向下取,其后的位取最大值。例如,130在转换为三进制时,十位的3不存在于对应表中,则十位取1对应的结果,个位取三进制的最大值2,即118。
具体实现如下:
def rotatedDigits(self, N: int) -> int: d7 = { "0": "0", "1": "1", "2": "2", "3": "2", "4": "2", "5": "3", "6": "4", "7": "4", "8": "5", "9": "6" } o7 = { "3", "4", "7"} d3 = { "0": "0", "1": "1", "2": "1", "3": "1", "4": "1", "5": "1", "6": "1", "7": "1", "8": "2", "9": "2" } o3 = { "2", "3", "4", "5", "6", "7", "9"} S = str(N) S7 = S3 = "" off = False for s in S: if off: S3 += "2" else: off = s in o3 S3 += d3[s] off = False for s in S: if off: S7 += "6" else: off = s in o7 S7 += d7[s] return int(S7, base=7) - int(S3, base=3)
转载地址:https://dataartist.blog.csdn.net/article/details/107068997 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月30日 11时41分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信小程序canvas裁剪图片中间部分
2019-04-30
my docker tutorial
2019-04-30
gdb debug summary
2019-04-30
python learning
2019-04-30
collections
2019-04-30
第二个MacBook,继续加油!
2019-04-30
unittest source code learning
2019-04-30
故障处理_vxwork 大端序和变量指针
2019-04-30
写在前面的话
2019-04-30
数据结构学习_树(1)
2019-04-30
数据结构学习_树(2)
2019-04-30
数据结构学习_树(3)
2019-04-30
数据结构学习_树(4)
2019-04-30
数组与矩阵(1)_矩阵相乘
2019-04-30
数据结构学习_图(1)深度优先搜索、广度优先搜索和最小生成树
2019-04-30
数据结构学习_图(1)拓扑排序
2019-04-30
第17章 custom views
2019-04-30
“老外学中文“-开发进度
2019-04-30
我的mac pro,今后我们要一起加油啦!
2019-04-30