Leetcode42 超過97%的算法 接雨水@python

2021-01-11 機器學習筆記

Leetcode42 python code

Leetcode 42 接雨水,複雜度O(n)

基本思路:先找到最高的柱子以及位置,然後分別用兩條指針,分別從兩端向最高的柱子靠近,如果柱子大於前面柱子的最大值則不存在積水,小於則存在積水,積水量:前面柱子的最大減去此柱子高度,代碼如上圖,下面講一下注意點:

1.Tips1 尋找最大位置:Line10-13

for i in range(lenh): if height[i]>maxh: maxh = height[i] indexmaxh = i

2.Tips2 沒有積水為大於前面最大的柱子:Line17-19和Line23-25

if oneh<height[i]: oneh = height[i] continue

3.Tips3 有積水的地方,積水量為(前面最大值減去此柱子高度):Line20和26

re = re+oneh-height[i]

4.Tips4 注意左右開始結束位置:Line16和22

for i in range(indexmaxh): for i in range(lenh-1,indexmaxh,-1):

計算結果超越97%算法,如果想再提高速度,建議可以從尋找最大值方面入手

計算結果圖

相關焦點

  • LeetCode數組類知識點&題型總結
    leetcode第一題就是two-sum,對於這類題目,首先看題目要求的時間複雜度和空間複雜度是什麼,其次看有沒有限制條件,如要求不能有重複的子數組或者要求按照升序/降序排列等。解法如下:Leetcode中包含該類型的題目:序號題目難度代碼1Two Sumeasypython、java、c++167Two Sum II-Input array is sortedeasypython、java、c++153Summediumpython、java、c++163Sum Closetmediumpython、java、c++2593Sum
  • leetcode-406 根據身高重建隊列
    題目https://leetcode-cn.com/problems/queue-reconstruction-by-height
  • 怒刷leetcode...
    心態放平,好好刷leetcode,好offer總在不遠處。   計算機視覺畢業後找不到工作怎麼辦?   AI專業畢業後是不是找不到工作?近日,有知乎網友提問,獲得了70萬閱讀量。 編程基礎還可以,自認為在教研室算好的了,python用得比較熟,C++也會一點,PyTorch, TensorFlow,Keras等框架也用的還可以。   當初選擇該方向時,深度學習正處於大熱階段,什麼無人駕駛,人臉識別聽起來就很高大上,似乎人人都想往這方向轉。   聽起來是不是和正在看這篇文章的你很像?
  • 數據結構與算法:05 Leetcode同步練習(一)
    參考代碼:思路:利用暴力算法。你的算法時間複雜度必須是O(log n)級別。執行用時: 128 ms, 在所有 C# 提交中擊敗了 97.17% 的用戶內存消耗: 23.8 MB, 在所有 C# 提交中擊敗了 12.00% 的用戶public class Solution {    public int Search(int[] nums, int target)     {
  • LeetCode面試系列 第6天:No.9 - 迴文數
    迴文數https://leetcode-cn.com/problems/palindrome-number/題目描述判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
  • 網際網路公司最常見的面試算法題大集合
    該項目目前分為四個部分:第一個部分是 leetcode 經典題目的解析,包括思路,關鍵點和具體的代碼實現第二部分是對於數據結構與算法的總結第三部分是 anki 卡片, 將 leetcode 題目按照一定的方式記錄在 anki 中,方便大家記憶第四部分是計劃, 這裡會記錄將來要加入到以上三個部分內容
  • LeetCode刷題第三周【數組(簡單)】
    示例 2:輸入: nums = [1, 2, 3, 4]輸出: -1解釋: 4沒有超過3的兩倍大, 所以我們返回 -1.2.1 解題思路此題目其實只是在尋找最大值輸出其下標(索引),這個問題上多了一個輸出判斷。這個判斷是最大值是否大於等於其它的值的兩倍。這裡C++可以通過冒泡排序先找到最大值及其對應的下標(索引)。
  • leetcode雞蛋掉落問題(egg drop)
    本來看算法4看得好好的,結果有一個作業提到了這個雞蛋掉落問題,實在是想不通啊otz。
  • 數據結構與算法-2
    回溯定義:回溯算法實際是一個類似枚舉的搜索過程,在搜索中發現原先選擇並不優或達不到目標,就返回一步嘗試別的選擇。走不通(剪枝)就退回再走的技術稱為回溯法。藉助遞歸去解決,類似DFS。因為是個數超過一半,那麼數組排序後該元素必定佔據數組的中間位置,O(log n)分治思想,第一次先把數組分解為2個,看left和right哪個元素的count(x)最大就返回哪個,然後繼續拆分直到只剩下一個元素了URL:https://leetcode.com/problems/majority-element/貪心算法
  • 面試向算法 - 二分法專題(二)
    前言 在我看來,大部分面試的算法題從來都不是難在思維,而是缺乏系統的教學。它不像數學屬於普及的基礎教育,算法題目的大部分知識、技巧往往都局限於 competitive programming 當中 (比如各種 OI 競賽、 ACM 競賽等),這些都是大部分計算機行業從業者接觸不到的。它就像一個大群體中一個半封閉的小群體一樣,系統的知識就在那裡,只是我們很少會主動走進去。
  • leetcode刷對了麼
    今天,逆行君就帶你從世界觀和方法論兩方面走進「leetcode」 簡單來說,leetcode是一個美國的在線編程網站,它收集了各大公司的經典算法面試題,用戶可以選擇不同的語言進行代碼的在線編寫、編譯和調試。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    上一篇文章中介紹了機器學習的簡單知識,還有python中進行機器學習實踐需要的生態環境,接下來將會通過鳶尾花分類這個例子對機器學習做一個簡要的介紹。通過一步一步地實現這個項目來介紹以下內容。導入和使用python中機器學習的各個方面的類庫。導入數據,並通過描述性分析、可視化等對數據進行分析。創建六個模型,並從中選擇準確度最高的模型。
  • LeetCode 234. 回文鍊表 | Python
    回文鍊表題目來源:力扣(LeetCode)https://leetcode-cn.com/problems/palindrome-linked-list/ 題目 請判斷一個鍊表是否為回文鍊表。 的算法
  • 加快Python算法的四個方法(二)Numba
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。今天給大家介紹Numba這一塊的內容。1.簡介所以什麼是Numba呢?
  • 每天一道leetcode234-回文鍊表
    正當班主任要繼續發話,只聽到角落默默想起來一個聲音:」K2」前言 2018.11.6號打卡明天的題目:https://leetcode-cn.com/problems/remove-linked-list-elements/以後明天的題目提取公布一下哈,因為有些朋友想提前做一下~題目 leetcode234-回文鍊表中文連結:https
  • [LeetCode] 912. Sort an Array 數組排序
    在 LeetCode 中也有一道使用這個算法思想的題 Kth Largest Element in an Array。快排的精髓在於選一個 pivot,然後將所有小於 pivot 的數字都放在左邊,大於 pivot 的數字都放在右邊,等於的話放哪邊都行。
  • Leetcode 46 超越73%的算法,全排列@python
    [nums]2.迭代要去除已有數據nums更新為nums[0:i]+(nums[i+1:](Line12)listone=self.permute(nums[0:i]+(nums[i+1:]))3.添加要以list添加(Line14)for j in listone:re.append([nums[i]]+j)結果超越73%的算法
  • 每天一道leetcode56-合併區間
    正當班主任要繼續發話,只聽到角落默默想起來一個聲音:」K2」前言 2018.11.13號打卡明天的題目:https://leetcode-cn.com/problems/minimum-path-sum/descrip題目 每天一道leetcode56
  • [劍指offer]day6(Python)
    進階:你可以設計並實現時間複雜度為 O(log n) 的算法解決此問題嗎?如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1:給定二叉樹 [3,9,20,null,null,15,7]    3   / \  9  20    /  \   15   7返回 true 。
  • Leetcode 37 超越100%算法,解數獨@python
    Leetcode 37 解數獨,具體代碼見上圖,下面講一些注意點1.本題採用算法思想:交集回溯,即使用行、列、3*3矩陣已有數字,通過交集推算每個框可能的數據,然後驗證,驗證不通過回溯,直至驗證通過計算結果:超越100%算法,如圖所示計算結果示意