【題 目】輸入一個已經按升序排列的數組,一個給定的數字,在數組中尋找兩個數,使得它們的和等於給定的數字。要求時間複雜度為O(n),如果存在多對滿足條件的數字對,只給出一對即可。例如:輸入數組『1,2,4,7,11,15』,給定一個數字15,那麼輸出應該為『4,11』. 【思路1】我們先不考慮時間複雜度為O(n),按照最直觀的思路來考慮,容易想到,我們一次固定數組中的一個數字,然後遍曆這個數字之後的各個數字,判斷和是否為給定的和,這樣的時間複雜度為O(n2)。容易寫出如下的代碼: 1
題目:定義Fibonacci數列如下:分析1:看到斐波那契數列幾乎所有的程式員在第一時間的反應都是“遞迴”,沒錯了,作為和漢諾塔一樣的經典遞迴問題,我們幾乎毫不猶豫就可以寫出如下的代碼: 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 long Fibonacci(unsigned int n) 6 { 7 if(n == 0) 8 return 0; 9
【題 目】輸入一個整數,輸出所有和為n的連續正數序列。例如:輸入15,由於15=7+8=4+5+6=1+2+3+4+5,所以輸出的序列為『1,2,3,4,5』;『4,5,6』,『7,8』三個。 【思路1】從等差數列的觀點考慮:如果有一列數滿足i+(i+1)+...+j=n,根據等差數列的求和公式,我們容易得到:(i+j)(j-i+1)/2=n,即(i+j)(j-i+1)=2n,由於i,j均為正整數,我們容易得到(i+j),(j-i+1)也都為正整數,所以都是2n的因子,我們就可以從2到sqrt(
題目:我們把只包含因子2、3和5的數稱作醜數(Ugly
【題 目】某公司有幾萬名員工,請完成一個時間複雜度為O(n)的演算法對該公司員工的年齡進行排序,可以使用O(1)的輔助空間。 【思
題外話:今天實在是太累了,但是為了能夠堅持下去,還是決定寫一個,不過題目很水,權當娛樂吧!【題 目】一個台階一共有n階,一次起跳可以跳一階,也可以跳二階。問總共有多少中跳法,並對時間複雜度進行分析。【思
【題 目】一個整型數組中除了兩個數字外,其他的數字都出現兩次。請找出這兩個只在數組中出現一次的數字。要求時間複雜度O(n),空間複雜度O(1)。 【思 路】首先我們考慮一個稍微簡單點的情況:如果這個數組中只有一個數字出現且僅出現一次,其他數字都出現兩次,我們應該怎麼樣找出這個數字呢?我們題目說數字出現兩次有什麼深意呢?我們很容易聯想到異或運算,因為任何一個數字和自身異或的結果為0;知道了這點,我們就很容易知道,我們將所有的數字進行異或,其結果就是僅出現一次的數字,因為其他所有的數字都兩兩異或為0
題目描述現在有一架飛機要起飛,乘客們正準備按機票號碼(1,2,3...,N)一次排隊登機。突然來了一隻大猩猩(金剛)。他也有機票,但是他插隊第一個登上了飛機,然後隨意的選擇了一個座位坐下了。根據社會的和諧程度,其他的乘客有兩種反應:1.乘客們都義憤填膺,“既然金剛同志都不守規矩,為什麼我要遵守?”他們也隨意的找位置坐下,並且堅決不讓座位給其他乘客。2.乘客們雖然感到憤怒,但是還是以“和諧”為重,如果自己的位置沒有被佔領,就趕緊坐下,如果自己的位置已經被別人(或者金剛同志)佔了,就隨機的選擇另一
問題描述 假設在中國象棋中只剩下將帥兩個棋子,國人都知道基本規則:將帥不能出九宮格,只能上下左右移動,不能斜向移動,同時將帥不能照面。問在這樣條件下,所有可能將帥位置。要求在代碼中只能使用一個位元組儲存變數。題目解答 如果放棄只要一個位元組儲存變數的條件,這道題簡直就是helloworld層級的題目,問題在於我們如何讓兩個for迴圈中的兩個變數放在一個位元組中,在開始的分析中,作者使用大量的位元運算來使得兩個變數儲存在同一個位元組中,程式變得就比較“臃腫”了。具體代碼見下: 1
一直忙於各種瑣碎的項目開題報告,編碼做PPT等瑣碎的工作,部落格都好久沒更新,罪過罪過!個人用github有一段時間了,當時學習的時候參照官方的教程,勉強能用,但是有些原理性的東西總是沒搞懂,所以很困惑,而網上關於git和github學習的中文文檔和學習資料都不是很多,所以打算寫一些自己使用github和git的一些心得,讓初學者少走彎路。----------------------------------------------基本概念:版本庫(Repository)是版本控制系統用來存放所有
【題 目】輸入一個字串,列印該字串的所有排列。例如輸入字串abc,輸出其全排列為abc,acb,bac,bca,cab,cba。 【思
【題 目】輸入一個正整數數組,將他們串連起來排成一個數,輸出所有排出的數字中最小的一個。例如:輸入數組『32,321』,輸出所能排出的最小數為:32132.請給出該問題的演算法。 【思
【題 目】輸入一個整型的數組,調整數組的數字,使得所有的奇數位於數組的前半部分,所有的偶數都位於數組的後半部分。要求時間複雜度為O(n)。 【思
【題 目】在一個字串找到第一個只出現一次的字元。例如:輸入字串abaccdeff,輸出b。【思 路1】其實我看到這道題的第一個反應就是雜湊表呀!當然我是學習過雜湊表之後才這麼說的,對於之前,我們的思路當然是,從頭到尾遍曆字串,對於遍曆到的每一個字元,拿它後面的每一個字元和它比較,如果沒有和它相等的字元,那麼它就是我們所要找的。很容看出來這種演算法的時間複雜度是O(n2).【思
【題 目】輸入兩個字串,從第一個字串中刪除第二個字串中出現的所有字元。例如:輸入"they are students." 與 “aeiou”,則應該輸出“thy r stdnts.”。 【思
【題 目】輸入一個整數n,求從1到n這n個正數中,1出現的次數。例如:輸入12,出現一的數字有1,10,11,12共有5個1,則輸出5. 【思
【題 目】數組中有一個數位出現次數超過了該數組長度的一半,找出這個數字。 【思 路1】由於要尋找的數位出現次數超過了數組長度的一半,所以如果將該數組排序,那麼它的中位元必然是我們要尋找的數字,所以我們的任務就是對該數組進行排序,而效能最好的快速排序的時間複雜度為O(nlogn),我們可以直接藉助庫函數完成,由於其效率不是很高,所以這裡就不再贅述。 【思
【題 目】輸入一個表示整數的字串,把該字串轉換成整數並輸出。例如:輸入“123”,輸出整數123. 【思
【題 目】實現函數double Power(double base,int exponent),求base的exponent次方,不需要考慮溢出。【思
【題 目】寫一個函數,求兩個整數的和。要求在函數體內不用+,-,×,/。 【思