Time of Update: 2018-12-03
#include<stdio.h>#include<stdlib.h>#define INF 0x7fffffff//歸併排序的非遞迴實現//將[l,mid]和[mid+1,r]歸併到一起 l<=mid<rvoid merge(int a[],int l,int mid,int r){ int i,j; int n1=mid-l+1; int n2=r-mid; int *left=new int[n1+1];
Time of Update: 2018-12-03
太坑爹了1、可能有負值2、左右子樹的大小不保證左邊<右邊#include<stdio.h>#include<stdlib.h>#include<vector>using namespace std;int n,k;struct Node{ int v,id; Node *left,*right; Node():left(NULL),right(NULL){}};Node* nd[10005];vector<int> vec;
Time of Update: 2018-12-03
一、具體題目如下:給一組非負的整數來表示一個柱狀圖,設計一個演算法獲得柱狀圖中最大矩形的面積。比如,輸入如下資料:2,1,5,6,2,3 ,其中每個數表示一個柱狀條的高度,柱狀條的寬度為預設值1,則計算得最大矩形的面積為10。 ==>此問題,在Leetcode中有原題:Largest Rectangle in Histogram演算法時間複雜度o(n):int largestRectArea(vector<int> &height) { stack<int&
Time of Update: 2018-12-03
“好學若饑、謙卑若愚”作者:於少蔚/譯 來源:財富中文版——蘋果電腦的CEO斯蒂夫·喬布斯在斯坦福大學畢業典禮上的演講 史蒂夫•喬布斯(Steve Jobs)今年 6 月在斯坦福大學的演講中談到了他生活中的三次體驗,這三次體驗不僅在斯坦福大學的畢業生、也在矽谷乃至其他地方的技術同行中引起了巨大反響。這個周末又重新讀了一下,覺得特別有啟發。尤其The Whole Earth
Time of Update: 2018-12-03
題目:給出N個正整數,如 {7, 959, 95, 71, 1}, 求將這些數串連起來所組成的最大的數,即959957711。變形:給出N個由0...9組成的字串(開頭可能為零),求將這些字串串連起來,所組成的最大(最小)的數。解:排序一下,然後拼接就OK了。重點在比較函數的實現上。方法I:比較函數在比較兩個數時,從高位到低位迴圈比較,如代碼所示。方法II:比較函數在比較兩個數A和B時,比較其拼接後的結果,即比較AB和BA,證明可見《劍指offer》。代碼(含C++11特性):#include
Time of Update: 2018-12-03
有頭腦的女人最美一個金髮美女走入紐約的一間銀行並以她又大又藍的眼睛看著貸款人員跟他說,她將要去歐洲洽公兩個星期,並要向銀行借5000元。貸款人員無法相信她竟笑的如此快樂,但旋即回到現實,並說銀行需要一些擔保品。所以她坐到貸款人員桌子旁,並交出停在銀行外面街上的一輛新的勞斯萊斯的鑰匙。當所有手續都已完成,且銀行方面也接受了那輛車為擔保品後,一位僱員即將車子開到銀行的地下室車庫停放。 兩周后,這個金髮美女穿著黑色緊身裙回到銀行,
Time of Update: 2018-12-03
問題:對一個只可能含有1、2、3三種值的數組,按升序排序。另一種常見問法:有一個只可能含有紅、綠、藍三種顏色的序列,進行分類,使紅色都位於最左邊,藍色都位於最右邊。解法I:使用計數排序,比較直觀,不再說。解法II:進行兩次快排中的二路劃分:想將數組劃分為1和非1兩個區間,再將非1段劃分為2和3兩區間 。解法III:仿照快排中用到的二路劃分,進行三路劃分。設原數組為A, 有n個元素。使用三個指標left, middle, right, 那麼A[0]...A[left-1]的值都為1A[left].
Time of Update: 2018-12-03
其實他只是一個普通人,只是用心做每一件事、待每一個人。他用二十年得到了今天。
Time of Update: 2018-12-03
問題:給定數組A[1...n],滿足:n>=3, A[1]>=A[2], A[n] >= A[n-1]。若A[i]為波穀,則:A[i-1] >= A[i] <= A[i+1]。請在O(logN)時間內,找到數組中的一個波穀。分析:根據資料數組的兩端的情況,可知:整個區間必存在波穀。要求O(logN),首先想到二分:設區間為【left,right】,滿足left>= left+1, right >= right-1。設mid = (left +
Time of Update: 2018-12-03
問題:有一座金字塔,從上到下,第一層有一個杯子、第二層有兩個杯子,依次類推。對杯子進行編號,有如下的形狀: 1 2 34 5 6每個杯子的容量為C升,從塔頂倒下L升水,當1號杯子滿了之後,會等量溢出到2號和3號杯子。當2號和3號滿了,2號溢出到4號和5號,3號溢出到5號和6號,注意5號接受來自兩個杯子的水。依次類推。給定C和L,請問,第n杯裡有多少水。from @陳利人分析:此題沒有想到好的方法,只想到類比(或者算DP),f[leveli,
Time of Update: 2018-12-03
問題:有n個瓶子,有一個獎品,遊戲者需要猜出獎品在哪個瓶子中。有n個黑色的瓶子(以至於遊戲中看不到瓶中是否有東西)設從0到n-1編號,一字排開。每一次如果遊戲者猜錯了,那麼獎品會各以50%的機率移動到左邊或者右邊的瓶子中。當獎品位於最左邊或者最右邊,遊戲者猜錯時,獎品必然右移或者左移。請問,遊戲者最少需要猜多少次,可以保證猜到獎品位置。ps:好像是網易遊戲面試題,比較有意思。分析:乍一看,感覺是無解,根本不可能猜得到。這也是有意思的地方。先假設8個瓶子,1.2.3.4.5.6.7.81)假設獎品
Time of Update: 2018-12-03
問題:有25匹馬,但只有5個跑道,即每場比賽只能五匹一起跑,沒有計時器,那麼最少需要舉行幾場比賽,才能確定前三甲呢?分析:首先, 將25匹馬分為5組A、B、C、D、E組,每組跑一次,確定出每組的名次;需要跑5場。假設:A1>A2>A3>A4>A5B1>B2>B3>B4>B5C1>C2>C3>C4>C5D1>D2>D3>D4>D5E1>E2>E3>E4>E5即:然後,A1,B1,
Time of Update: 2018-12-03
面試小貼士:Dos & Don’ts。 DOs 在受到邀請之後再坐下。 保持眼神交流,不要左顧右盼,心不在焉。 面試前刷牙,保持口氣清新。 採用一個合適的電子郵箱地址,不要用很花哨的名字。 在每一次面試後對自己的表現做一個簡單總結,吸取經驗。 保持微笑,從容應對。 DON’Ts 譴責過去實習或兼職單位的老闆或同事。即使你曾經是在地獄和撒旦共事,也要
Time of Update: 2018-12-03
==有限層數和蛋數,求即使最壞情況下需要的最少判斷次數==兩個軟硬程度一樣但未知的雞蛋,它們有可能都在一樓就摔碎,也可能從一百層樓摔下來沒事。有座100層的建築,要你用這兩個雞蛋確定哪一層是雞蛋可以安全落下的最高位置。可以摔碎兩個雞蛋。分析:這是典型的動態規劃問題。假設f[n]表示從n層樓找到摔雞蛋不碎安全位元置的最少判斷次數。假設第一個雞蛋第一次從第i層扔下,如果碎了,就剩一個雞蛋,為確定下面樓層中的安全位元置,必須從第一層挨著試,還需要i-1次;如果不碎的話,上面還有n-i層,剩下兩個雞蛋,
Time of Update: 2018-12-03
題目:給定一個字串,字串中只包含‘0’和‘1’。請找到一個最長的子串,使得其中0和1的數量是相同的例1:“10101010” 結果就是其本身例2:“0011110”結果是“0011”擴充:給定一個字串,字串只包含‘(’和‘)’,請找出一個最長的子串,使得該子串滿足括弧匹配法則。例1:“(()())()()”結果為自身例2:“())()()(”結果為“()()"錯誤的解法:(沒考慮仔細)解:擴充後題目要求更嚴格一點,但解題思路是一樣的:用棧儲存字元,掃描字串,如果1)當前字元與棧頂匹配(‘0’和‘
Time of Update: 2018-12-03
問題一:一根一米長的繩子,隨機斷成三段;求最短的一段的期望長度以及最長的一段的期望長度。分析:這道題實際是一道純粹的機率題,沒有太多技巧。自己有推導,但是機率論忘得差不多了,退出來的機率有點詭異;以後補充一下知識,再推導。先放一下@陳利人 給出的答案吧,比較簡略:繩子的長度分析,有時間,我會補充一個詳細的。問題二:52張牌,四張A,隨機打亂後問,從左至右一張一張翻直到出現第一張A,請問平均要翻幾張牌?解法I:設n張牌要翻f(n)次,則f(4)=1。可已將翻第一張牌分“翻到”和“沒翻到”兩種情況:
Time of Update: 2018-12-03
問題:一個小島,表示為一個N×N的方格,從(0,0)到(N-1, N-1),一個人站在島上,位置(x, y),他可以上下左右走,一步一個格子,他選擇上下左右的可能性是一樣的。當他走出小島,就意味著死亡。假設他要走k步,請問他死亡的機率有多大?分析I:要求機率,首先想到計算出所有路徑的種數N,以及出界的路徑種數M,死亡的機率就是N/M了。計算路徑種數可以用DP的思想:設走k步從位置(x, y)到達(i,j)的路徑種數為f[k][i][j],那麼:f[k][i][j] =
Time of Update: 2018-12-03
之前在IIT時就遇到本本跑matlab時out of memory,一直沒有去想怎麼解決,直接將程式發到工作站跑的.回來後沒有條件,還是遇到這個問題了. 跑程式時記憶體空間實際上足夠,但卻裝不下一個大容量的矩陣,原因是儲存這個矩陣需要連續的記憶體空間,而現有的空間都是片段. 網上解決方案說1 預先定義大矩陣,2 及時clear無用變數,3
Time of Update: 2018-12-03
問題:n個色子,每個色子m面,每一面的值分別為m-1。你將n個色子同時拋,落地後將所有朝上面的數字加起來,記為sum。給定一個數字x,如果sum>x,則你贏。給定n,m,x,求你贏的機率。分析:何海濤的《劍指offer》中有類似的題目,但這裡問的更Gerneral。要求的是機率,所以可以從兩個方面入手:種類數 & 機率。PS:認為每個面的值為 0,1,...,m-1。一、從種類數入手:總的種類數為m^n,只需求出其中滿足sum>x的個數K,即可得到機率: K / (m^n)。
Time of Update: 2018-12-03
How I Work: Bill Gates Not much of a paper chase for Microsoft's chairman, who uses a range of digital tools to do business. Bill Gates, chairman and chief software architect, Microsoft, U.S.A. April 7, 2006: 5:17 PM EDT NEW YORK