力扣題目彙總(買賣股票的最佳時機,最大連續1的個數,缺失的數字)

買賣股票的最佳時機 II

1.題目描述

    1. 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。python

      設計一個算法來計算你所能獲取的最大利潤。你能夠儘量地完成更多的交易(屢次買賣一支股票)。算法

      注意:你不能同時參與多筆交易(你必須在再次購買前出售掉以前的股票)。數組

      示例 1:app

      輸入: [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:code

      輸入: [7,6,4,3,1]
      輸出: 0
      解釋: 在這種狀況下, 沒有交易完成, 因此最大利潤爲 0。

2.解題思路

看示例就能發現他的計算規律若是次日比第一天鬼就賣否賊就不賣,而後差值相加,別被第二個示例影響到,你能夠想成
2-1+3-2+4-3+5-4=4也是同樣的

3.解題

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的個數。leetcode

    示例 1:get

    輸入: [1,1,0,1,1,1]
    輸出: 3
    解釋: 開頭的兩位和最後的三位都是連續1,因此最大連續1的個數是 3.

    注意:it

    • 輸入的數組只包含 01
    • 輸入數組的長度是正整數,且不超過 10,000。

2.解題思路

這題遇到問題是無法計數,我是經過把計數單獨定義一個次數,從左往右開始每碰到一個1計數加1,後續每了就把計數總和導入一個列表而且把計數歸零接着計數,以及最後計數完了再把計數導入下列表,這裏取最大值多導入幾個0沒有什麼影響,少導入就有問題了

3.解題

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 中沒有出如今序列中的那個數。io

        示例 1:

        輸入: [3,0,1]
        輸出: 2

        示例 2:

        輸入: [9,6,4,2,3,5,7,0,1]
        輸出: 8

2.解題思路

這題最大問題是運行時間,要簡化算法,那就乾脆換個思路不能死板的按照他說的來,若是一個值沒有在裏面那這個N序列的總和減去列表總和就是咱們要的那個值

3.解題

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)

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索