1. 程式人生 > >高階程式設計技術 Python 第八週作業

高階程式設計技術 Python 第八週作業

Maximum Subarray (#53)

來源:https://leetcode.com/problems/maximum-subarray/description/

題意:

給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。

示例:

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

分析:

一個數組若只有一個元素,則其具有最大和的連續子陣列就是本身。

若有多個元素,則可以尋找它的子陣列中具有最大連續和的,再判斷要不要加上它的最後一個數。由此,我們可以得到:

tmp.append(nums[i])
        if (tmp[i-1] > 0):
            tmp[i] = tmp[i]+tmp[i-1]

最後取所有子陣列中最大連續和最大的,就是總問題的答案。

程式碼如下:

def maxSubArray(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    n = len(nums)
    ans = nums[0]
    tmp = []
    tmp.append(nums[0])
    for i in range(1, n):
        tmp.append(nums[i])
        if (tmp[i-1] > 0):
            tmp[i] = tmp[i]+tmp[i-1]
        if (tmp[i] > ans):
            ans = tmp[i]
    return ans

狀態:


Maximum Product Subarray (#152)

來源:https://leetcode.com/problems/maximum-product-subarray/description/

題意:

給定一個整數陣列 nums ,找出一個序列中乘積最大的連續子序列(該序列至少包含一個數)。

示例 1:

輸入: [2,3,-2,4]
輸出: 6
解釋: 子陣列 [2,3] 有最大乘積 6。

示例 2:

輸入: [-2,0,-1]
輸出: 0
解釋: 結果不能為 2, 因為 [-2,-1] 不是子陣列。

分析:

這一題和上一題有些相似,但做法不一樣。若只有一個數,則乘積就是它本身;若不止一個數,則依據陣列中每個數的正負號來判斷是否要乘上這個數。程式碼如下:

def maxProduct(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    n = len(nums)
    r = nums[0]
    imax = r
    imin = r
    for i in range(1, n):
        if (nums[i] < 0):
            imax, imin = imin, imax
        imax = max(nums[i], imax*nums[i])
        imin = min(nums[i], imin*nums[i])
        r = max(r, imax)
    return r

狀態:


相關推薦

高階程式設計技術 Python 作業

Maximum Subarray (#53)來源:https://leetcode.com/problems/maximum-subarray/description/題意:給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。

高階程式設計技術 Python 作業

第九章:類#9-1class Restaurant(): def __init__(self, name, cuisine_type): self.name = name self.type = cuisine_type

高階程式設計技術 Python 九周作業

Move Zeroes (#283)來源:https://leetcode.com/problems/move-zeroes/description/題意:給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例:輸入: [0,1,0

高階程式設計技術12周作業

import numpy as np import matplotlib.pyplot as plt import scipy.stats as sts #exercise 1 f, ax = plt.subplots(1, 1, figsize=(5,4)) x=np

高階程式設計技術15周作業

from sklearn import datasets, cross_validation from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC from sklearn.ensembl

老男孩python作業

切換 允許 一致性 斷點續傳 進行 文件傳輸 server 傳輸 上傳 作業要求: 開發一個支持多用戶在線的FTP程序 要求: 1.用戶加密認證 2.允許同時多用戶登陸 3.每個用戶都有自己的家目錄,並且只能訪問自己的

2017-2018-2 20179223《網絡攻防技術作業

iptable amba sudo 用戶認證 方案 shel linu 搜索 選擇 網絡攻防環境的搭建與測試 網絡攻防環境的搭建與測試主要包括四臺虛擬機(windows攻擊機和靶機、Linux攻擊機和靶機),均采用NAT模式,將虛擬機ip地址設置為同一個網段,Linux攻擊

[廣東技術師範學院]作業成績排行榜

amp bubuko 第八周 做到 clas 作業 oba uri 分享圖片 作業地址以及評分規則 https://edu.cnblogs.com/campus/gdin/15Computer/homework/1922 評分說明 本次評分分為兩個部分,即某個同學的分數構成

python學習內容

1.socket網路程式設計 1.1概念: 網路套接字是跨計算機網路的連線的端點。今天,計算機之間的大多數通訊都基於網際網路協議;因此大多數網路套接字都是Internet套接字。更準確地說,套接字是一個控制代碼(抽象引用),本地程式可以將其傳遞給網路應用程式程式設計介面(API)以使用該連線,例如“在此套

201771010118馬昕璐《面向物件程式設計java》學習總結

 第一部分:理論知識學習部分 1.介面  在Java程式設計語言中,介面不是類,而是對類的一組需求描述,由常量和一組抽象方法組成。Java為了克服單繼承的缺點,Java使用了介面,一個類可以實現一個或多個介面  宣告方式:  public interface 介

201771010116馬凱軍《面向物件程式設計Java》實驗總結

一,理論知識學習部分 6.1.1 介面概念 兩種含義:一,Java介面,Java語言中存在的結構,有特定的語法和結構;二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做“Java介面”,後者叫做“介面”。用interface宣告,是抽象方法和常量值定義的集 合。從本質上講,介面是一種特殊的抽象

201771010134楊其菊《面向物件程式設計java》學習總結

                                            &

《演算法設計與分析》作業

《演算法設計與分析》第八週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第八週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

程式設計技術章例程

《程式設計技術》例程 《程式設計技術》第一章 C語言與程式設計(例程) 《程式設計技術》第二章 C語言基礎知識(例程) 《程式設計技術》第三章 程式控制結構(例程) 《程式設計技術》第四章 陣列和字串(例程) 《程式設計技術》第五章 指標(例程) 《程式設計技術》第六章 函式(例程) 《

2018-2019-1 20189221 《Linux核心原理與分析》作業

2018-2019-1 20189221 《Linux核心原理與分析》第八週作業 實驗六 編譯連結過程 gcc –e –o hello.cpp hello.c / gcc -x cpp-output -S -o hello.s hello.cpp gcc -x assembler -c hel

2018-2019-1 20189213《Linux核心原理與分析》作業

可執行程式工作原理 書本重要知識總結 1.ELF檔案 ELF(Excutable and Linking Format)即可執行的和可連結的格式,是一個目標檔案格式的標準。通過readelf -h hello檢視可執行檔案hello的頭部(-a檢視全部資訊,-h只檢視頭部資訊),頭部裡面註明了目標檔案型別

2018-2019-1 20189201 《LInux核心原理與分析》作業

只有在天足夠黑的時候你才能看到星星。 BY WAY GK 加油 一、書本第七章知識總結【可執行程式工作原理】 1. ELF目標檔案格式 ELF全稱Executable and Linkable Format,可執行連線格式,ELF格式的檔案用於儲存Linux程式。ELF檔案(目標檔案)格

《Linux核心原理與分析》作業

課本:第七章 可執行程式工作原理 ELF目標檔案格式 目標檔案:編譯器生成的檔案。 目標檔案的格式:out格式、COFF格式、PE(windows)格式、ELF(Linux)格式。 ELF(Executable and Linkable Format)即可執行和可連結的

2018-2019-1 20189215 《Linux核心原理與分析》作業

可執行程式工作原理 《庖丁解牛》第七章書本知識總結 “目標檔案”是指編譯器生成的檔案,“目標”指的是目標平臺,例如x86或x64,它決定了編譯器使用的機器指令集。目標檔案一般也叫做ABI(應用程式二進位制介面),目標檔案和目標平臺是二進位制相容的。二進位制相容是指該目標檔案已經是適應某一種CPU體系

2018-2019-1 20189206 《Linux核心原理與分析》作業

#linux核心分析學習筆記 ——第七章 可執行程式工作原理 學習目標:瞭解一個可執行程式是如何作為一個程序工作的。 ELF檔案 目標檔案:是指由彙編產生的(*.o)檔案和可執行檔案。 即 可執行或可連線的檔案。目標檔案是已經適應某一種CPU體系結構上的二進位制指令。 目標檔案的格式可以分為: