首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >力扣题目汇总(买卖股票的最佳时机,最大连续1的个数,缺失的数字)

力扣题目汇总(买卖股票的最佳时机,最大连续1的个数,缺失的数字)

作者头像
小小咸鱼YwY
发布2019-07-24 15:58:55
发布2019-07-24 15:58:55
5440
举报
文章被收录于专栏:python-爬虫python-爬虫

买卖股票的最佳时机 II

1.题目描述

    1. 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。 示例 2: 输入: [1,2,3,4,5] 输出: 4 解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。 示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

2.解题思路

代码语言:javascript
复制
看示例就能发现他的计算规律如果第二天比第一天鬼就卖否贼就不卖,然后差值相加,别被第二个示例影响到,你可以想成
2-1+3-2+4-3+5-4=4也是一样的

3.解题

代码语言:javascript
复制
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        money = 0
        for a in range(1,len(prices)):
            if prices[a] > prices[a-1]:
                money += (prices[a] - prices[a-1])
        return money

最大连续1的个数

1.题目描述

  1. 给定一个二进制数组, 计算其中最大连续1的个数。 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意:
    • 输入的数组只包含 01
    • 输入数组的长度是正整数,且不超过 10,000。

2.解题思路

代码语言:javascript
复制
这题遇到问题是没法计数,我是通过把计数单独定义一个次数,从左往右开始每碰到一个1计数加1,后续每了就把计数总和导入一个列表并且把计数归零接着计数,以及最后计数完了再把计数导入下列表,这里取最大值多导入几个0没有什么影响,少导入就有问题了

3.解题

代码语言:javascript
复制
class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        count = 0
        count_list = []
        for a in nums:
            if a == 1:
                count += 1
            else:
                count_list.append(count)
                count = 0
        count_list.append(count)
        return max(count_list)

缺失数字

1.题目描述

      1. 给定一个包含 0, 1, 2, ..., nn 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8

2.解题思路

代码语言:javascript
复制
这题最大问题是运行时间,要简化算法,那就干脆换个思路不能死板的按照他说的来,如果一个值没有在里面那这个N序列的总和减去列表总和就是我们要的那个值

3.解题

代码语言:javascript
复制
class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        nums_sum = 0
        for a in range(len(nums)+1):
            nums_sum += a
        return nums_sum-sum(nums)

`有更加好的思路,或者解题方法评论区留言谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 买卖股票的最佳时机 II
    • 1.题目描述
    • 2.解题思路
    • 3.解题
  • 最大连续1的个数
    • 1.题目描述
    • 2.解题思路
    • 3.解题
  • 缺失数字
    • 1.题目描述
    • 2.解题思路
    • 3.解题
  • `有更加好的思路,或者解题方法评论区留言谢谢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档