0


每天刷两道题——第十天

1.1和为k的子数组

给你一个整数数组

     n 
    
   
     u 
    
   
     m 
    
   
     s 
    
   
  
    nums 
   
  
nums 和一个整数  
 
  
   
   
     k 
    
   
  
    k 
   
  
k ,请你统计并返回 该数组中
和为
     k 
    
   
  
    k 
   
  
k 的
子数组的个数

子数组是

数组中元素的

连续非空序列

输入

:nums = [1,2,3], k = 3

输出

:2

前缀和
在这里插入图片描述

1.2如何使用

前缀和的主要用处:

求任意区间的区间和


在这里插入图片描述
代码

defsubArraySum(self,nums,k):
        count,n=0,len(nums)
        pre=[0]*(n+1)for i inrange(1,n+1):
            pre[i]=pre[i-1]+nums[i-1]for i inrange(1,n+1):for j inrange(i,n+1):if(pre[j]-pre[i-1]==k):
                    count+=1return count

1.2买卖股票的最佳时机

给定一个数组

     p 
    
   
     r 
    
   
     i 
    
   
     c 
    
   
     e 
    
   
     s 
    
   
  
    prices 
   
  
prices ,它的第  
 
  
   
   
     i 
    
   
  
    i 
   
  
i个元素  
 
  
   
   
     p 
    
   
     r 
    
   
     i 
    
   
     c 
    
   
     e 
    
   
     s 
    
   
     [ 
    
   
     i 
    
   
     ] 
    
   
  
    prices[i] 
   
  
prices[i] 表示一支给定股票第  
 
  
   
   
     i 
    
   
  
    i 
   
  
i 天的价格。你只能选择
某一天 买入这只股票

,并选择在

未来的某一个不同的日子卖出该股票

。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。

如果你不能获取任何利润,返回 0
输入

:[7,1,5,3,6,4]

输出

:5

解释

:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票

代码

defmaxProfit(self,prices):
        inf=int(1e9)
        minprice=inf
        maxprofit=0for p in prices:
            maxprofit=max(p-minprice,maxprofit)
            minprice=min(p,minprice)return maxprofit

参考知乎
参考博客

标签: python

本文转载自: https://blog.csdn.net/csdn_1_10086/article/details/135461895
版权归原作者 小手指动起来 所有, 如有侵权,请联系我们删除。

“每天刷两道题——第十天”的评论:

还没有评论