今天做leetcode第7题关于数字倒序的问题,分别使用如下程序:(72ms)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution: def reverse( self , x): """ :type x: int :rtype: int """ #maxNum = 2**31-1 #minNum = -1*2**31 i = 1 if (x< 0 ): i,x = - 1 , abs (x) x_s = str (x) x_s = i * int (x_s[:: - 1 ]) if x_s > 2147483647 or x_s < - 2147483648 : return 0 return x_s |
而使用方法2:(112ms)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Solution: def reverse( self , x): """ :type x: int :rtype: int """ #maxNum = 2**31-1 #minNum = -1*2**31 i = 1 if (x< 0 ): i,x = - 1 , abs (x) x_s = str (x) x_s = i * int (x_s[:: - 1 ]) return 0 if x_s > 2147483647 or x_s < - 2147483648 else x_s |
在做一下改进:(76ms)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution: def reverse( self , x): """ :type x: int :rtype: int """ #maxNum = 2**31-1 #minNum = -1*2**31 i = 1 if (x< 0 ): i,x = - 1 , abs (x) x_s = str (x) x_s = i * int (x_s[:: - 1 ]) return x_s if x_s < = 2147483647 and x_s > = - 2147483648 else 0 #return 0 if x_s >2147483647 or x_s < -2147483648 else x_s |
对比三种方法,可以看到,其实简简单单的一个if else,也有需要我们仔细考虑的:
第2种方法用时大,是因为用例大多数都是else中的内容,这样的话,大部分用例都执行完if又执行的else,这样的话,有一个if 为False之后的跳转过程,导致开销变大。
对于第3种方法,比第二种方法效率高的原因是:大部分用例都只执行到if阶段
而第1种方法和第3种方法对比,在于第1种方法使用的是 or ,对于 or 判决,如果第一个为真就满足了,可以缩小一些开销吧;
而第1种方法和第2种方法比,同样也是因为第2种方法else的跳转导致的。
总结就是:使用if-return-return 比 if-else-return更有效率一些。
参考:‘
作者:禅在心中
出处:http://www.cnblogs.com/pinking/
本文版权归作者和博客园共有,欢迎批评指正及转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具