什么是并查集 在計(jì)算機(jī)科學(xué)中离唐,并查集是一種樹型的數(shù)據(jù)結(jié)構(gòu)惊暴,用于處理一些不交集(Disjoint Sets)的合并及查詢問題。有一個(gè)聯(lián)合-查找算法(Union-find Alg...
![240](https://cdn2.jianshu.io/assets/default_avatar/7-0993d41a595d6ab6ef17b19496eb2f21.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
什么是并查集 在計(jì)算機(jī)科學(xué)中离唐,并查集是一種樹型的數(shù)據(jù)結(jié)構(gòu)惊暴,用于處理一些不交集(Disjoint Sets)的合并及查詢問題。有一個(gè)聯(lián)合-查找算法(Union-find Alg...
什么是滑動(dòng)窗口(Sliding Window) The Sliding Problem contains a sliding window which is a sub – ...
題目說明 給定一個(gè)整數(shù)數(shù)組 nums 馆衔,找到一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和。 示例: 進(jìn)階: 如果你已經(jīng)實(shí)現(xiàn)復(fù)雜度為 O(n) 的解法,嘗...
如何理解分治算法 分治算法(divide and conquer)的核心思想就四個(gè)字:分而治之眯漩,就是將原問題劃分成 n 個(gè)規(guī)模較小,并且結(jié)構(gòu)與原問題相似的子問題溪窒,遞歸地解決這...
什么是貪心算法 貪心算法(英語:greedy algorithm),又稱貪婪算法冯勉,是一種在每一步選擇中都采取在當(dāng)前狀態(tài)下最好或最優(yōu)(即最有利)的選擇澈蚌,從而希望導(dǎo)致結(jié)果是最好或...
什么是回溯算法 回溯算法實(shí)際上一個(gè)類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解灼狰,當(dāng)發(fā)現(xiàn)已不滿足求解條件時(shí)宛瞄,就 “回溯” 返回,嘗試別的路徑交胚。 回溯法是一種選優(yōu)搜...
前言 上一節(jié)通過兩個(gè)經(jīng)理案例初步認(rèn)識(shí)動(dòng)態(tài)規(guī)劃份汗,今天這一節(jié)主要講動(dòng)態(tài)規(guī)劃的理論知識(shí)。 “一個(gè)模型三個(gè)特征”理論講解 實(shí)際上蝴簇,動(dòng)態(tài)規(guī)劃作為一個(gè)非常成熟的算法思想杯活,這部分理論總結(jié)為...
前言 今天開始學(xué)習(xí)動(dòng)態(tài)規(guī)劃,一共有三節(jié)熬词,分別是:初識(shí)動(dòng)態(tài)規(guī)劃旁钧、動(dòng)態(tài)規(guī)劃理論、動(dòng)態(tài)規(guī)劃實(shí)戰(zhàn)互拾。今天這一節(jié)就是初識(shí)動(dòng)態(tài)規(guī)劃歪今。 動(dòng)態(tài)規(guī)劃比較適合用來求解最優(yōu)問題,比如最大值颜矿、最小值等...
什么是搜索算法 上一節(jié)介紹了圖的基本概念寄猩,這一節(jié)介紹圖的搜索算法。 圖的搜索算法骑疆,最直觀的理解就是從一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)的路徑田篇。 最簡(jiǎn)單的是廣度優(yōu)先搜索和深度優(yōu)先搜索,這也是...
基本概念 圖是一種非線性的數(shù)據(jù)結(jié)構(gòu)箍铭,相比樹來說斯辰,更加復(fù)雜。 圖的元素叫頂點(diǎn)坡疼,樹的元素叫節(jié)點(diǎn)彬呻。 度:頂點(diǎn)相連的邊的條數(shù)叫度。 圖的分類有無向圖、有向圖闸氮、帶權(quán)圖 無向圖 邊沒有方...
上一節(jié)我們學(xué)習(xí)了堆和堆排序的一些理論知識(shí)(點(diǎn)擊查看)剪况,今天我們就來講一講,堆這種數(shù)據(jù)結(jié)構(gòu)的幾個(gè)非常重要的應(yīng)用蒲跨。 應(yīng)用一:優(yōu)先級(jí)隊(duì)列 優(yōu)先隊(duì)隊(duì)列译断,是一個(gè)按優(yōu)先級(jí)進(jìn)出的特殊隊(duì)列,...
今天我們來學(xué)習(xí)堆和堆排序或悲。 什么是堆 堆是一種特殊的樹孙咪,滿足以下兩點(diǎn)要求: 堆是一個(gè)完全二叉樹。 堆中每個(gè)節(jié)點(diǎn)的值都必須大于等于(或小于等于)其子樹中每個(gè)節(jié)點(diǎn)的值巡语。 通過要求...
前言 在排序那一節(jié)里翎蹈,講到排序時(shí),利用遞推公式推導(dǎo)時(shí)間復(fù)雜度來求解歸并排序男公、快速排序的時(shí)間復(fù)雜度荤堪,但有些情況,例如快速排序的平均時(shí)間復(fù)雜度枢赔,利用遞推公式澄阳,會(huì)涉及很復(fù)雜的數(shù)據(jù)推...
前言 二叉查找樹是最常用的一種二叉樹,它支持快速查找踏拜、插入碎赢、刪除操作。性能與樹的高度成正比速梗,理想情況下揩抡,時(shí)間復(fù)雜為是O(logn)。 不過頻繁的更新镀琉,二叉樹的高度會(huì)遠(yuǎn)大于lo...
二叉查找樹 二叉查找樹是二叉樹中最常用的一種類型峦嗤,也叫二叉搜索樹。 二叉查找樹要求屋摔,在樹中的任意一個(gè)節(jié)點(diǎn)烁设,其左子的每個(gè)節(jié)點(diǎn)的值,都要小于這個(gè)節(jié)點(diǎn)的值钓试,而右子樹節(jié)點(diǎn)的值都大于這...
概念 樹:是一種數(shù)據(jù)結(jié)構(gòu),像一顆倒掛的樹弓熏。樹的每個(gè)元素叫作“節(jié)點(diǎn)”恋谭;用來連續(xù)相鄰節(jié)點(diǎn)之間的關(guān)系,叫作“父子關(guān)系”挽鞠。 關(guān)于高度(Height)疚颊、深度(Depth)狈孔、層(Leve...
前言 上一節(jié)我們講了哈希算法的四個(gè)應(yīng)用,分別是安全加密材义、數(shù)據(jù)校驗(yàn)均抽、唯一標(biāo)識(shí)、散列函數(shù)其掂。今天再來看看剩下的三個(gè)應(yīng)用:負(fù)載均衡油挥、數(shù)據(jù)分片、分布式存儲(chǔ)款熬。 可能大家已經(jīng)發(fā)現(xiàn)了深寥,這三個(gè)...
什么是哈希算法 將任意長(zhǎng)度的二進(jìn)制值串映射為固定長(zhǎng)度的二進(jìn)制值串,這個(gè)映射的規(guī)則就是哈希算法贤牛。而通過原始數(shù)據(jù)映射之后得到的二進(jìn)制值串就是哈希值惋鹅。 一個(gè)優(yōu)秀的哈希算法要滿足幾點(diǎn)...
有兩種數(shù)據(jù)結(jié)構(gòu)(散列表和鏈表)經(jīng)常會(huì)被放在一起使用盔夜。前面的章節(jié)中有兩個(gè)地方講到散列表和鏈表的組合使用负饲,分別是: 04——鏈表 13——跳表 另外堤魁,Java中有一個(gè)容器Link...