原创 leetcode:Divide Two Integers

一、 題目 不使用乘法、除法、求餘運算實現除法運算,除數和被除數、結果都是用int型。 如果溢出就返回MAX_INT。 二、 分析 看到題目後我立馬想到了計算機組成原理中的一位除法和二位除法,不過想想在這裏實現起來又是太麻煩了。 那就先試

原创 leetcode:Find Peak Element

一、 題目 峯值元素的定義是比鄰居元素都大的元素。 給定一個數組,其中array[n] != array[n + 1],找出峯值元素並返回它的索引。但是其中可能含有多個峯值,不過返回其中的一個就可以了,可以假設num[-1] = num[

原创 leetcode:Binary Tree Right Side View

一、 題目   給你一個二叉樹,假設幾就站在樹的後邊,那麼此時你就只能看到最右邊的節點了。 例如:     1            <---   /   \  2      3         <---  \     \   5   

原创 leetcode:Excel Sheet Column Number

一、 題目 給定一個出現在Excel表格中的列標題,返回其對應的列號。 例如:   A -> 1      B -> 2      C -> 3      ...      Z -> 26      AA -> 27      AB ->

原创 leetcode:Bitwise AND of Numbers Range

一、 題目 給出一個範圍,這個範圍在0--2147483647,返回在這一個範圍的所有整數的與操作值。這個範圍包括兩個邊界。 例如:給出[5,7] 返回的是4 二、 分析 或許我們最能輕易想到的是使用暴力解法,即將範圍中的數依次與操作,

原创 蓄水池抽樣

沉默了這麼多天沒有發過文章,怎麼會突然看到這個算法的呢? 話說這是某搜索的二面面試官給的一個題目,我知道一定會有人吐槽,PS:提前說下,這道題在《編程珠璣》上有類似的。。。曾經這本書就在我面前,但是我沒有珍惜,直到今天我才後悔莫及。。。。

原创 leetcode:Length of Last Word

一、 題目 給定一個字符串s由大/小寫字母和空的空間字符' ',返回字符串的最後一個單詞的長度。 如果最後一個單詞不存在,則返回0。 注:一個單詞被定義爲一個不帶空格的字符序列。 例如, 給出s =“Hello World”, 返回5。

原创 C++內存泄漏和內存碎片的產生及避免策略

1.內存泄漏的定義      一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完後必須顯示釋放的內存。應用程序一般使用malloc,realloc,new等函數從堆中

原创 聲明和定義的區別

聲明部分的作用是對有關的標識符(如變量、函數、結構體、共用體等)的屬性進行說明。對於函數,聲明和定義的區別是明顯的,函數的聲明是函數的原型,而函數的定義是函數功能的確立。對函數的聲明是可以放在聲明部分中的,而函數的定義顯然不在函數的聲明部

原创 leetcode:Rotate List

一、 題目 給出一個鏈表,將右邊k個節點移到前面。 例如:1->2->3->4->5->NULL,k = 2時 返回  4->5->1->2->3->NULL 二、 分析 之前我們遇到過將字符右移或左移的,當時的思路是將前一部分反轉,後一

原创 leetcode:Reverse Words in a String

一、 題目 給出一個字符串,以單詞爲單位反轉字符串。 例如 i am echo 返回 echo am i 二、 分析 仔細分析會發現,對於中間結果我們需要保存,即我們得保證以單詞爲單位。另外我們需要考慮到下面的情況 1、中間有多個空格的處

原创 程序員面試的Top10大算法概念

以下是在編程面試中排名前10的算法相關的概念 StringLinked ListTreeGraphSortingRecursion vs. Iteration (遞歸 vs. 迭代)Dynamic Programming (動態規劃)

原创 leetcode:Sum Root to Leaf Numbers

一、 題目 給一個二叉樹,其中節點只可能是數字0-9,每一條路徑組成一個數。 如下:       1     /  \       2   3 左邊路徑1->2 代表 12. 右邊路徑1->3 代表 13.   sum = 12 + 13

原创 class和struct的區別

1、最主要的區別,默認的繼承訪問權限。struct是public的,class是private的。 2、關於使用大括號初始化 class和struct如果定義了構造函數的話,都不能用大括號進行初始化 如果沒有定義構造函數,struct可以

原创 leetcode:Search for a Range

一、 題目 給出一個已經排好序的數組和一個數字,找出在這個數字在數組中的範圍。 例如:[5,7,7,8,8,10]和8 返回:[3,4] 二、 分析 題目很基礎,就是找出等值的數字的開始和結束索引,上去就遍歷當第一次遇到等值時記錄下左索引