原创 實現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: