您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python代码在数组中不起作用

5b51 2022/1/14 8:21:46 python 字数 9021 阅读 523 来源 www.jb51.cc/python

这是一个算法问题,其主题是:最佳买卖时机假设您有一个数组,其中第i个元素是第i天给定股票的价格.如果您只被允许完成最多一笔交易(即买入并卖出一股股票),请设计一个算法来查找最大利润.*例1:输入:[7,1,5,3,6,4]输出:5最大.差异= 6-1 = 5(不是7-1 = 6,因为售价需要大于购买价格).**例2:输入:[7,6,4,3,1]输出:0在这种

概述

这是一个算法问题,其主题是:
最佳买卖时机

假设您有一个数组,其中第i个元素是第i天给定股票的价格.
如果您只被允许完成最多一笔交易(即买入并卖出一股股票),请设计一个算法来查找最大利润.

*例1:
输入:[7,1,5,3,6,4]
输出:5

最大.差异= 6-1 = 5(不是7-1 = 6,因为售价需要大于购买价格).*

*例2:
输入:[7,4,1]
输出:0

在这种情况下,不进行任何交易,即最大利润= 0.*

我使用python进行了解决.代码如下:

class Solution(object):
def maxProfit(self,prices):
    """
    :type prices: List[int]
    :rtype: int
    """
    i=Max=0
    if not prices:
        return 0
    while i+1 <= len(prices)-1:
        j=i+1
        while j < len(prices):
            if prices[i] < prices[j]:
                Max = max(Max,prices[j] - prices[i])
                j+=1
            j+=1
        i+=1
    return Max
@H_419_26@

然而,系统让我觉得我错了:
Return wrong

试过但我无法弄清楚错误在哪里……有人可以帮忙吗?非常感谢!

然而,系统让我觉得我错了:
Return wrong

试过但我无法弄清楚错误在哪里……有人可以帮忙吗?非常感谢!

然而,系统让我觉得我错了:
Return wrong

试过但我无法弄清楚错误在哪里……有人可以帮忙吗?非常感谢!

    Max = max(Max,prices[j] - prices[i])
    j+=1
j+=1
@H_419_26@

它是双j = 1.每当最大值改变时,j增加两次,跳过一些比较.

删除if-branch中的j = 1,您将获得输入向量的正确结果:

    Max = max(Max,prices[j] - prices[i])
j+=1
@H_419_26@

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

    Max = max(Max,prices[j] - prices[i])
j+=1
@H_419_26@

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

它是双j = 1.每当最大值改变时,j增加两次,跳过一些比较.

删除if-branch中的j = 1,您将获得输入向量的正确结果:

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

>在这种情况下无需使用类.

它是双j = 1.每当最大值改变时,j增加两次,跳过一些比较.

删除if-branch中的j = 1,您将获得输入向量的正确结果:

    Max = max(Max,prices[j] - prices[i])
j+=1
@H_419_26@

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

>在这种情况下无需使用类.

如果有兴趣,这里有一些改进编码风格的技巧:

>而i 1< = len(价格)-1:加1并使用< =是多余的.而我< len(价格)-1:稍微清洁一点.
> For循环比while循环更容易阅读,并且性能稍好一些.当只有一个计数器需要增加时使用它们:

for i in range(len(prices)):
    for j in range(i,len(prices)):
        if prices[i] < prices[j]:
            Max = max(Max,prices[j] - prices[i])
@H_419_26@

>在这种情况下无需使用类.

>在这种情况下无需使用类.

>在这种情况下无需使用类.

总结

以上是编程之家为你收集整理的python代码在数组中不起作用全部内容,希望文章能够帮你解决python代码在数组中不起作用所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶