1. 程式人生 > >第十七週:120. Triangle

第十七週:120. Triangle

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

我一開始是用貪心思想來做,每一行都取最小的數,但是發現不能通過,因為每行找到一個最小值,那麼這些最小值的路徑不一定滿足相鄰的條件。

錯誤程式碼如下:

int minimumTotal(int** triangle, int triangleRowSize, int *triangleColSizes) {
    int i,j;
    int sum=0;
    int mintemp;
    for(i=triangleRowSize-1;i>=0;i--)
        {
            mintemp=triangle[i][0];
            for(j=0;j<triangleColSizes[i];j++)
            {
                if(mintemp<=triangle[i][j])
                    mintemp=triangle[i][j];
            }
            sum+=mintemp;
        }
        return sum;
}

接著想到一種辦法就是定義一個temp陣列儲存當前行的計算結果,對於當前行中的每一個元素,只需要找到上一行中和當前元素相鄰的2個元素

的最小值,然後把這兒最小值加上當前元素並更新temp陣列就可以了。不斷進行下去,直到最後一行為止。這個過程可以看做一個很簡單的動態規劃。

AC:

class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
         int size = triangle.size();
            for(int i = size - 2;i >= 0;--i){
                for(int j = 0;j <= i;++j){
                    triangle[i][j] += min(triangle[i+1][j],triangle[i+1][j+1]);
                }
            }
            return triangle[0][0];
    }
};

相關推薦

120. Triangle

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For examp

Ng大規模機器學習(Large Scale Machine Learning)

在線 src 化簡 ima 機器學習 learning 大型數據集 machine cnblogs 17.1 大型數據集的學習 17.2 隨機梯度下降法 17.3 微型批量梯度下降 17.4 隨機梯度下降收斂 17.5 在線學習 17.6 映射化簡和數據並行

易混淆的概念(靜態和非靜態、拆箱和裝箱)

博客 學生 margin tex OS 地址 add logs text 一. 靜態和非靜態 二. 拆箱和裝箱 1 ! 作 者 :

學習筆記斜率優化Dp,四邊形不等式證明決策單調

正題       我就以這一題:玩具裝箱裝玩具來引入我們今天的話題。       我們先設f[i]表示前i個玩具裝的最小費用是多少。       那麼,很明顯就有我們列舉一個j,使得j+1到i裝

csv拆分、csv轉excel方法

首先對微軟的office功能表示敬佩!可能是這些辦公軟體太過平常化,所以體會不到他有多牛!csv格式資料以前沒接觸過,百度百科定義,Comma-Separated Values,CSV,逗號分隔值,或者符號分隔值  分隔符號一般是逗號,檔案以純文字形式儲存表格資料,因此能儲存非常大資料量的

【演算法設計與分析作業題】20. Valid Parentheses

題目 C++ solution class Solution { public: bool isValid(string s) { stack<char> cstack; for (int i = 0; i < s.si

【跟我學oracle18c】Multitenant Architecture多租戶框架2.2 Overview of Commonality in the CDB(藍色感悟)

在CDB中,每個使用者、角色或物件都是通用的或本地的。類似地,通常或區域性授予特權. This section contains the following topics: About Commonality in a CDB A common phenomenon defined i

“全棧2019”Java賦值運算子和算術運算子

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第十七章:賦值運算子和算術運算子 下一章 “全棧2019”Java第十八章:一元運算子 學

“全棧2019”Java賦值運算符和算術運算符

技術 intel 難度 允許 更多 https 同步 com 運算符 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Java第十七章:賦值運算符和

SpringBoot | web 應用開發之檔案上傳

前言 上一章節,我們講解了利用模版引擎實現前端頁面渲染,從而實現動態網頁的功能,同時也提出了相容jsp專案的解決方案。既然開始講解web開發了,我們就接著繼續往web這個方向繼續吧。通常,我們在做web開發時,碰見諸如附件上傳、圖片頭像上傳等檔案的上傳需求也是再正常不過的。

Java程式設計思想 深入研究容器

1. 完整的容器分類法 下面是集合類庫的完整圖: Java SE5新添加了: Queue介面(LinkedList已經為實現該介面做了修改)及其實現PriorityQueue和各種風格的BlockingQueue。 ConcurrentMap介面及其實現Concu

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

  第十七週學習總結 1. 程式是一段靜態的程式碼,它是應用程式執行的藍本。程序是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。作業系統為每個程序分配一段獨立的記憶體空間和系統資源,包括:程式碼資料以及堆疊等資源。每一個程序的內部資料和狀態都是完全獨立的。多工作業系統中,

201771010135 楊蓉慶《面對物件程式設計(java)》學習總結

1、實驗目的與要求 (1) 掌握執行緒同步的概念及實現技術;  (2) 執行緒綜合程式設計練習 一、理論知識 ⚫ 執行緒同步 (1)多執行緒併發執行不確定性問題解決方案:引入線 程同步機制,使得另一執行緒要使用該方法,就只 能等待 (2)在Java中解決多執行緒同步問

楊玲 201771010133《面向物件程式設計(java)》學習總結

《面向物件程式設計(java)》第十七週學習總結 第一部分:實驗部分 實驗名稱:實驗十七  執行緒同步控制 1、實驗目的與要求 (1) 掌握執行緒同步的概念及實現技術; (2) 執行緒綜合程式設計練習 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l&nbs

作業

姓名:鄒豐蔚 學號:201771010138 實驗十七  執行緒同步控制 實驗時間 2018-12-10 1、實驗目的與要求 (1) 掌握執行緒同步的概念及實現技術;   (2) 執行緒綜合程式設計練習   2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋

李曉菁201771010114《面向物件程式設計(java)》學習總結

 1.Java通過多執行緒的併發執行提高系統資源利用率,改善系統性能。 2.假設有兩個或兩個以上的執行緒共享 某個物件,每個執行緒都呼叫了改變該物件類狀態的方法,就會引起的不確定性。 3.多執行緒併發執行中的問題 ◆多個執行緒相對執行的順序是不確定的。 ◆執行緒執行順序的不確定性會產生執行結

201771010109焦旭超《面向物件程式設計(java)》學習總結

1、實驗目的與要求 (1) 掌握執行緒同步的概念及實現技術;  (2) 執行緒綜合程式設計練習 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l 在Elipse環境下除錯教材651頁程式14-7,結合程式執行結果理解程式; l&nb

201771010112羅鬆《面向物件程式設計(java)》學習總結

1、實驗目的與要求 (1) 掌握執行緒同步的概念及實現技術;  (2) 執行緒綜合程式設計練習 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l 在Elipse環境下除錯教材651頁程式14-7,結合程式執行結果理解程式; l&nb

201771010123汪慧和《面向物件程式設計Java》實驗總結

一、理論部分 1、多執行緒併發執行中的問題 ◆多個執行緒相對執行的順序是不確定的。 ◆執行緒執行順序的不確定性會產生執行結果的不確定性。 ◆在多執行緒對共享資料操作時常常會產生這種不確定性。 2、執行緒的同步 -多執行緒併發執行不確定性問題解決方案:引入執行緒同步機制,使得另一執行緒要使用該方法,

達拉草201771010105《面向物件程式設計(java)》學習總結

達拉草201771010105《面向物件程式設計(java)》第十七週學習總結 第一部分:理論知識 1.多執行緒的概念: (1)多執行緒是程序執行過程中產生的多條執行線索。  (2)多執行緒意味著一個程式的多行語句可以看上去幾 乎在同一時間內同時執行。  (3)執行緒不能獨立存在