july算法1——算法初步

1.算法復雜度

  • 談算法不談復雜度=耍流氓
  • 在實現之前,我們要預估算法所需要的資源
    時間:基本操作次數(匯編指令條數)
    空間:占用內存字節(jié)數
    區(qū)別:空間可以再利用
  • O(1)
    基本運算,+,-,*,/,%,尋址
  • O(logn)
    二分查找
  • O(n1/2)
    枚舉約數
  • O(n)
    線性查找
  • O(n2)
    樸素最近點對
  • O(n3)
    Floyd最短路
    普通矩陣乘法
  • O(nlogn)
    歸并排序
    快速排序的期望復雜度
    基于比較排序的算法下界
  • O(2n)
    枚舉全部的子集
  • O(n!)
    枚舉全排列
  • 總結:
    優(yōu)秀 O(1) < O(logn) < O(n1/2) < O(n) < O(nlogn)
    可能可以優(yōu)化 O(n2) < O(n3) < O(2n) < O(n!)

2.從暴力算法開始優(yōu)化

2.1 Leetcode 121

Best Time to Buy and Sell Stock

2.2 最大子數組和

給定數組a[1…n],求最大子數組和,即找出1<=i<=j<=n,使a[i]+a[i+1]+…+a[j]最大。

2.2.1 暴力枚舉 O(n3)

2.2.2 優(yōu)化枚舉 O(n2)

2.2.3 貪心法 O(n)

2.2.4 總結

3.思考題

3.1 設計一個隊列

支持:出隊,入隊,求最大元素
要求O(1)
均攤分析

3.2 判斷是否構成三角形

給定一個正整數組a,是否能以3個數為邊長構成三角形?
即是否存在不同的i,j,k,
滿足 a[i] < a[j] + a[k]
并且 a[j] < a[i] + a[k]
并且 a[k] < a[i] + a[j]

3.3 Leetcode 152 Maximum Product Subarray

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 在C語言中,五種基本數據類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,034評論 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評論 0 2
  • 本文僅為作者自學之用,系統(tǒng)為macOS,不保證信息準確。 Flask的上下文使用 寫慣了java或者python等...
    蕭瑟空間閱讀 559評論 0 0
  • 十月六日,晴(五) 驚心動魄的第一天 當時公寓里有三個女孩:吵架的女孩Fei,短頭發(fā)女孩雨涵,還有個沉默的妹子Iv...
    夏槿11閱讀 337評論 0 3
  • redis的集群方案現在主要有三種(不考慮云集群),一種是豌豆莢的codis,codis是豌豆莢的團隊在redis...
    江江的大豬閱讀 316評論 0 1

友情鏈接更多精彩內容