原创 實現atoi函數

要求: The function first discards as many whitespace characters as necessary until the first non-whitespace character i

原创 實現二分查找樹的迭代器(Binary Search Tree Iterator )

Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.

原创 Add Binary(二進制字符串相加)

Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". Solut

原创 求字符串中最長迴文

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, a

原创 Two sum(在數組中找兩個數,使其和爲指定值)

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum s

原创 紅黑樹和平衡二叉樹 區別

紅黑樹和平衡二叉樹區別如下:1、紅黑樹放棄了追求完全平衡,追求大致平衡,在與平衡二叉樹的時間複雜度相差不大的情況下,保證每次插入最多只需要三次旋轉就能達到平衡,實現起來也更爲簡單。2、平衡二叉樹追求絕對平衡,條件比較苛刻,實現起來比較麻煩

原创 求字典序的下一個排列(對應lc的Next Permutation)

如果字典序的下一個排列不存在,則返回升序排序。 步驟如下: (1)找到排列中最後(最右)一個升序的首位位置i,x = ai。 (2)找到排列中第i位右面比ai大的最右位置j,y = aj。 (3)交換x和y。 (4)把第i+1到數組最後一

原创 尋找最小的k個數

從n個書中找出最小的k個數。 解法有如下幾種: (1)全部排序之後找前k個,時間爲O(n*n) (2)部分排序。維護一個大小爲k的數組a[k],遍歷n個數的過程中更新數組a。時間爲O(k*n) (3)維護一個容量爲k 的大頂堆,遍歷過程

原创 找數組中唯一重複的元素

1-1000放在含有1001個元素的數組中,只有唯一的一個元素值重複,其它均只出現一次.每個數組元素只能訪問一次,設計一個算法,將它找出來;不用輔助存儲空間。 (1)   方法一:(當N爲比較大時警惕溢出) 將1001個元素相加減去

原创 求全排列

本文取自July的《編程之法》一書。 求n個字符的n!個全排列。 解法一:        從字符串中選出一個字符作爲排列的第一個字符,然後對剩餘的字符進行全排列。如此遞歸處理,從而得到所有字符的全排列。如字符串爲“abc”,按一下步驟進行

原创 數字的拆分問題和換零錢問題

一、 (1)輸入n,和k,問將n用1到k這k個數字進行拆分,有多少種拆分方法。例如:n=5,k=3 則有n=3+2, n=3+1+1, n=2+1+1+1, n=2+2+1, n=1+1+1+1+1這5種拆分方法。     這個問題是動

原创 折半查找算法的正確實現

從一個有序數組中查找元素,可以用折半查找,時間複雜度爲O(logn)。該算法理解起來比較簡單,但能否正確實現的人並不多。 下面給出該算法的正確實現 int binarySearch(int *arr, int size, int key

原创 求兩個有序數組的中位數(擴展求第k大元素)

數組A和數組B都是已經排好序的數組,求其中位數。 Solutions:   開闢一個數組,返回其中位數。時間複雜度O(n),空間也是O(n)。 class Solution { public: double findMedian

原创 判斷是否是二叉查找樹

給定一個二叉樹,判斷它是否是合法的二叉查找樹(BST) 一棵BST定義爲: 節點的左子樹中的值要嚴格小於該節點的值。節點的右子樹中的值要嚴格大於該節點的值。左右子樹也必須是二叉查找樹。 樣例 一個例子: 1 /

原创 刪除鏈表倒數第N個元素

Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: