1. 程式人生 > >演算法--中級演算法題目與實現

演算法--中級演算法題目與實現

1、區間求值

我們會傳遞給你一個包含兩個數字的陣列。返回這兩個數字和它們之間所有數字的和。

最小的數字並非總在最前面。

2、找出陣列間的差別

比較兩個陣列,然後返回一個新陣列,該陣列的元素為兩個給定陣列中所有獨有的陣列元素。換言之,返回兩個陣列的差異

3、數字轉為羅馬數字

將給定的數字轉換成羅馬數字。

所有返回的 羅馬數字 都應該是大寫形式

4、物件搜尋

寫一個 function方法,它遍歷一個物件陣列(第一個引數)並返回一個包含相匹配的屬性-值對(第二個引數)的所有物件的陣列。如果返回的陣列中包含 source 物件的屬性-值對,那麼此物件的每一個屬性-值對都必須存在於 collection 的物件中。

例如,如果第一個引數是 [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],第二個引數是 { last: "Capulet" },那麼你必須從陣列(第一個引數)返回其中的第三個物件,因為它包含了作為第二個引數傳遞的屬性-值對。

5、字串查詢替換

使用給定的引數對字串執行一次查詢和替換,然後返回新字串。

第一個引數是將要對其執行查詢和替換的字串。

第二個引數是將被替換掉的單詞(替換前的單詞)。

第三個引數用於替換第二個引數(替換後的單詞)。

注意:替換時保持原單詞的大小寫。例如,如果你想用單詞 "dog" 替換單詞 "Book" ,你應該替換成 "Dog"。

6、字串移動插入

把指定的字串翻譯成 pig latin。

Pig Latin 把一個英文單詞的第一個子音或子音叢(consonant cluster)移到詞尾,然後加上字尾 "ay"。

如果單詞以母音開始,你只需要在詞尾新增 "way" 就可以了。

輸入字串保證是英文單詞全部小寫

7、字元匹配

DNA 鏈缺少配對的鹼基。依據每一個鹼基,為其找到配對的鹼基,然後將結果作為第二個陣列返回。

Base pairs(鹼基對) 是一對 AT 和 CG,為給定的字母匹配缺失的鹼基。

在每一個數組中將給定的字母作為第一個鹼基返回。

例如,對於輸入的 GCG,相應地返回 [["G", "C"], ["C","G"],["G", "C"]]

字母和與之配對的字母在一個數組內,然後所有陣列再被組織起來封裝進一個數組

8、字串查詢補充

從傳遞進來的字母序列中找到缺失的字母並返回它。

如果所有字母都在序列中,返回 undefined

9、輸入檢查

檢查一個值是否是基本布林型別,並返回 true 或 false。

基本布林型別即 true 和 false

10、陣列去重

寫一個 function,傳入兩個或兩個以上的陣列,返回一個以給定的原始陣列排序的不包含重複值的新陣列。

換句話說,所有陣列中的所有值都應該以原始順序被包含在內,但是在最終的陣列中不包含重複值。

非重複的數字應該以它們原始的順序排序,但最終的陣列不應該以數字順序排序

11、HTML符號轉實體

將字串中的字元 &<>" (雙引號), 以及 ' (單引號)轉換為它們對應的 HTML 實體

12、字串連線

將字串轉換為 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 這種形式的,也就是以連字元連線所有小寫單詞。

13、斐波那契奇數求和

給一個正整數num,返回小於或等於num的斐波納契奇數之和。

斐波納契序列中的前兩個數字是1和1.序列中的每個附加數字是前面兩個數字的和。斐波納契序列的前六個數字是1,1,2,3,5和8。

例如,sumFibs(4)應該返回 5,因為斐波納契數列中所有小於4的奇數是 1、1、3。

14、質素求和

求小於等於給定數值的質數之和。

只有 1 和它本身兩個約數的數叫質數。例如,2 是質數,因為它只能被 1 和 2 整除。1 不是質數,因為它只能被自身整除。

給定的數不一定是質數。

15、最小公倍數

找到所提供引數的最小公倍數,這兩個引數可以均勻分配,以及這些引數之間範圍內的所有最小公倍數。

範圍是兩個數字構成的陣列,兩個數字不一定按數字順序排序。

例如對 1 和 3 —— 找出能被 1 和 3 和它們之間所有數字整除的最小公倍數。

16、陣列驗證

寫一個 function,它查詢陣列(第一個引數)並返回陣列中第一個通過某種方法(第二個引數)驗證的元素

17、陣列取值

刪除陣列(第一個引數)的元素,從左邊開始,直到回撥函式(第二個引數)return true就停止。

第二個引數,func,是一個函式。用來測試陣列的第一個元素,如果返回fasle,就從陣列中丟擲該元素(注意:此時陣列已被改變),繼續測試陣列的第一個元素,如果返回fasle,繼續丟擲,直到返回true。

最後返回陣列的剩餘部分,如果沒有剩餘,就返回一個空陣列。

17、陣列平鋪

對巢狀的陣列進行平鋪巢狀陣列。你必須考慮到不同層級的巢狀。

18、二進位制轉字元

傳入二進位制字串,翻譯成英語句子並返回。

二進位制字串是以空格分隔的。

19、陣列元素判斷

所有的東西都是真的!

完善編輯器中的every函式,如果集合(collection)中的所有物件都存在對應的屬性(第二個引數),並且屬性(第二個引數)對應的值為真。函式返回ture。反之,返回false。

20、函式迭代可選引數

建立一個計算兩個引數之和的 function。如果只有一個引數,則返回一個 function,該 function 請求一個引數然後返回求和的結果。

例如,add(2, 3) 應該返回 5,而 add(2) 應該返回一個 function。

呼叫這個有一個引數的返回的 function,返回求和的結果:

var sumTwoAnd = add(2);

sumTwoAnd(3) 返回 5

如果兩個引數都不是有效的數字,則返回 undefined。

21、