原创 LEETCODE 378 有序矩陣中第K小的元素

378. 有序矩陣中第K小的元素 1.二分法 class Solution { public: int kthSmallest(vector<vector<int>>& matrix, int k) { a

原创 鏈表相關問題分析part2(尋找公共節點,是否有環)

這篇文章主要是分析一下鏈表是否有環問題(LeetCode141題)主要方法類似於上一篇文章 https://blog.csdn.net/you558/article/details/102409450 題目描述如下: 思路一:

原创 三數之和 四數之和

leetcode 15 三數之和 leetcode16 最接近的三數之和 leetcode 18 四數之和 這三道題目都是一個類型,主要就是利用有序數組與雙指針的一些技巧; 首先給出一個基本模板,如何在一個有序數組中找到兩數之和爲

原创 鏈表相關問題分析part1(尋找公共節點,是否有環)

這篇文章主要是分析一下最近做過的兩道leetcode鏈表相關的題目,這兩道題目有很大的相似,分別爲LeetCode160題和LeetCode141題。 首先來看一下160題(相交鏈表): 思路一: 看到這道題目首先第一想法就是遍

原创 字符串的最大公因子 /最小的k個數

第一題: 一個性質:如果 str1 和 str2 拼接後等於 str2和 str1 拼接起來的字符串(注意拼接順序不同),那麼一定存在上述條件的字符串 X; 證明過程 還有一個性質:如果X是str1和str2公共因子,那麼X的長

原创 合併K個排序鏈表(C++實現)

Leetcode第23題,一道hard題。 leetcode 23 1.分治法 實現方法其實和普通的歸併排序差不多,最大的區別是這裏我們每一次合併只需要處理兩個鏈表就行了。 class Solution { public:

原创 二分查找的一些想法 LeetCode 704題

基本的解決方法就是利用二分法: class Solution { public: int search(vector<int>& nums, int target) { int io=0

原创 leveldb 源碼剖析之二 內存管理 arena.cc arena.h

leveldb內存管理主要是通過arena.cc arena.h這兩個文件來實現的,其中arena.h定義了一個Arena類,arena.cc爲各種成員函數的具體實現。相比於STL的空間配置,leveldb的整個框架還是比較簡單的

原创 leetcode 42接雨水

leetcode 42題目 思路: 我們要找到每一個位置雨水的高度,這個高度等於該位置左右兩邊最大值中的小者減去當前位置的高度。所以解決這個問題關鍵就變成了給定一個位置,如何找到其左右兩邊的最大值; 方法一: 用兩個循環分別找到

原创 leetcode 06 Z字形變換

leetcode 06 這道題有點找規律的意思,參考官方解答有兩種方法; 方法一: 一行一行的排下去,直到字符串結束; class Solution { public: string convert(string s, i

原创 leveldb源碼剖析系列之一

接下來準備系統的分析一下leveldb的源碼,這是第一篇,算是一個開始吧。希望能堅持下去,把文章全部更新完;

原创 LEETCODE 460 實現LFU緩存

leetcode 460 方法一:雙哈希表法 題目要求需要在常數時間完成插入和查找算法,聯繫之前的LRU算法,很容易想到用哈希表。具體做法如下: 第一個哈希表存儲 使用頻率freq 和一個雙向鏈表這樣一對映射,鏈表的每個節點存

原创 字符串反轉 leetcode 344

題目如下: 這是一道easy題,大概思路有兩種: 雙指針法 兩個指針指向數組的首部和尾部,交換兩個指針指向的字符,然後兩個指針逐漸向中間靠攏,當首指針大於尾指針時結束循環。 遞歸 定義一個遞歸函數,每次交換數組首部和尾部的字符

原创 LEETCODE 72 編輯距離

leetcode72 這是一道比較典型的動態規劃題目,狀態轉移方程比較容易給出,題目給出的三種操作插入,刪除,替換三種操作,分別對應三種轉移方程。 1.如果兩個字符串最後字符相同,情況比較簡單 dp[i][j]=dp[i-1]

原创 實現atoi()函數,字符串轉整型

*實現atoi()函數其實LeetCode 的一道中等題,具體題目如下: 這道題目的基本思路並不難,麻煩的在於各種邊界條件的判斷,整個轉換必須處理好如下幾個問題: 開始連續的空格後接數字 正負號的處理 出現其他非數字的字符 溢