打赏
禅在心中
东风夜放花千树,更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。 蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。

今天做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更有效率一些。

 

参考:‘

https://stackoverflow.com/questions/9191388/it-is-more-efficient-to-use-if-return-return-or-if-else-return

posted on   禅在心中  阅读(7024)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示