原创 10.3.2 (python) 動態規劃數組類LeetCode題目 —— Decode Ways & Range Sum Query 2D

這幾道題稍微加大難度,DP的框架是不變的,關鍵是分析問題的結構,分析狀態轉移關係。 91. Decode Ways A message containing letters from A-Z is being encoded to num

原创 10.4.1 (python) 動態規劃專題之最長遞增子序列 —— Longest Increasing Subsequence & Russian Doll Envelopes

Longest Increasing Subsequence 簡稱 LIS,是一個經典問題。我們看一下經典解題方法及一道應用題目。   300. Longest Increasing Subsequence Given an unsort

原创 10.3.3 (python) 動態規劃數組類LeetCode題目 —— Dungeon Game & Frog Jump

來看兩道 hard 級別的題目,其子問題性質很明顯,就是動態規劃,難點就是我們可能找不好子問題的關係式。 174. Dungeon Game The demons had captured the princess (P) and imp

原创 7.12.1 線段樹原理及應用(上)

繼續在樹這一類問題上拓展,線段樹也是高級的數據結構,初學者要跳過,深入學習階段可以適當瞭解一下,拓寬思維能力。如果要參加競賽或者其他對數據結構要求比較高的情形,可以仔細研究一番,本文借其他博客和幾道力扣題目介紹一下線段樹。 第一篇文章我們

原创 java各種類型對象佔用內存情況分析(經典篇,有圖有真相)

寫在轉載文章前面: 在項目中遇到了詭異的內存佔用過高的問題,其實搬到服務器上內存也夠,但是某位大神還是鍥而不捨的追求問題本質,於是我們學習了這篇文章。 項目中讀了一個1.7G的詞向量文件(對,用Java搞NLP),文件每行爲一個詞語及30

原创 7.11.1 Trie 樹(字典樹)簡介與實現

新年第一篇,補充一下trie樹的相關知識,還比較好理解,關鍵是在實際問題上應用起來~ 一、基本概念  Trie樹又稱字典樹、單詞查找樹、前綴樹等,是一種樹形結構,是一種哈希樹的變種。典型應用是用於統計,排序和保存大量的字符串(但不僅限於字

原创 LeetCode刷題指南——題目精選1

這是LeetCode經典題目總結文章~ 基礎:將數據結構及算法學習的差不多,LeetCode題目按類別刷題及總結,參考鄙人數據結構及算法系列文章~ 按類別將每類題目做好,大概刷250道左右的程度即可。 再按照如下精選題目進行知識點鞏固,文

原创 8.2.3 python排序LeetCode題目(3) —— K Pairs with Smallest Sums & Kth Smallest Element in a Sorted Matrix

這一節再看一些排序相關的題目。   373. Find K Pairs with Smallest Sums You are given two integer arrays nums1 and nums2 sorted in ascen

原创 8.1.1 排序算法概述及python基本實現(上)

從查找算法的性能可以看出,有序數據可以提高查找速度。對數據進行排序,是數據結構與算法知識基礎篇中最後介紹也是最重要的一部分。 面試時考察編程基礎,一看字符串、數組處理的一些題目,二看鏈表、樹的基礎應用,三看查找、排序各種方法張口就來。 排

原创 9.1 數據結構之圖的基本概念及存儲結構

前面8章都是比較基礎的數據結構與算法,當然各章也有一些較深的知識。之後的章節,都是進階的數據結構與算法的知識了。 這一章我們介紹更復雜的數據結構——圖。 圖狀結構是一種比樹形結構更復雜的非線性結構。在樹狀結構中,結點間具有分支層次關係,每

原创 8.2.1 (python)排序算法之鏈表排序LeetCode題目(1) —— Sort List & Merge k Sorted Lists

首先,在排序的題目中,我們先總結、學習一下,鏈表排序的問題,順便也回憶一下鏈表相關操作。對應於下面兩道題 147. Insertion Sort List Sort a linked list using insertion sort.

原创 8.1.2 排序算法概述及python基本實現(下)

歸併排序(Merge Sort) 和選擇排序一樣,歸併排序的性能不受輸入數據的影響,但表現比選擇排序好的多,因爲始終都是O(n log n)的時間複雜度。代價是需要額外的內存空間。 歸併排序是建立在歸併操作上的一種有效的排序算法。該算法是

原创 8.2.2 (python)排序算法及LeetCode題目(2) —— Insert Interval & Contains Duplicate III & Wiggle Sort II

這一節是數組排序的相關題目,並沒有直接應用算法解決問題那麼好的事情。這一部分都是難度較高的題目,重點是解題思路,和排序相關,反而沒用到什麼排序算法。 57. Insert Interval Given a set of non-overl

原创 7.10.1 優先隊列及堆

樹這一章真是又臭又長,這一節從優先隊列着手,學習堆的概念。 優先隊列 隊列是一種FIFO(First-In-First-Out)先進先出的數據結構,優先隊列(Priority Queue)是特殊的隊列,從“優先”一詞,可看出有“插隊現象”

原创 7.10.2 (python)堆的應用及Leetcode題目解析

我們簡單看幾道二叉堆/優先隊列的應用。 215. Kth Largest Element in an Array Find the kth largest element in an unsorted array. Note that i