??途W(wǎng)華為機試題訓練匯總(JavaScript)_第1頁
牛客網(wǎng)華為機試題訓練匯總(JavaScript)_第2頁
??途W(wǎng)華為機試題訓練匯總(JavaScript)_第3頁
牛客網(wǎng)華為機試題訓練匯總(JavaScript)_第4頁
??途W(wǎng)華為機試題訓練匯總(JavaScript)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、客華為機試題訓練匯總(JavaScript)客華為機試題訓練(JavaScript Node環(huán)境)章錄前題摘錄,答案為作者親操編碼。直接拷貝代碼即可運,記得如下運環(huán)境:、題HJ11數(shù)字顛倒描述: 輸個整數(shù),將這個整數(shù)以字符串的形式逆序輸出 程序不考慮負數(shù)的情況,若數(shù)字含有0,則逆序形式也含有0,如輸為100, 則輸出為001輸描述: 輸個int整數(shù)輸出描述: 將這個整數(shù)以字符串的形式逆序輸出例1:輸:1516000 輸出:0006151輸:1516000 輸出:0006151答案: (思路:轉(zhuǎn)成字符串數(shù)組,反轉(zhuǎn),再轉(zhuǎn)成字符串)1123456789const readline = require

2、 (readline);const rl = readline .createInterface (input: process.stdin, output : process.stdout)rl.on(line, (str) = deal(str)function deal(str) let result = .str.reverse ().join(); console.log(result)rl.on(close, () = rl.close();)HJ22汽瓶描述 有這樣道智題:“某商店規(guī)定:三個空汽瓶可以換瓶汽。張上有個空汽瓶,她最多可以換多少瓶汽喝?”答案是5瓶,法如下:先9個空瓶

3、換3瓶汽,喝掉3瓶滿的,喝完以后4個空瓶,3個再換瓶,喝掉這瓶滿的,這時候剩2個空瓶3個空瓶換瓶滿的還給板。如果張上有n個空汽瓶,最多可 以換多少瓶汽喝?輸描述: 輸件最多包含10組測試數(shù)據(jù),每個數(shù)據(jù)占,僅包含個正整數(shù)n(1=n let num = Number(str); if (num != 0) let result = getNum(Number(str) console .log(result)rl.on(close, () = rl.close();)function getNum(num) if (num = 2) /兩個空瓶return 1;if (num = 1) /個空瓶r

4、eturn 0;if (num 2) let q = Math.floor(num / 3); let r = num % 3;return q + getNum(q + r);HJ53楊輝三的變形描述以上三形的數(shù)陣,第只有個數(shù)1,以下每的每個數(shù),是恰好是它上的數(shù),左上數(shù)到右上的數(shù),3個數(shù)之和(如果不存在某 個數(shù),認為該數(shù)就是0)。-1。例如輸3,則輸出2,輸4則輸出3。 輸n(n )等式讀輸描述: 輸個int整數(shù)輸出描述: 輸出返回的int值例1輸:輸:42輸出: 3-1答案: (思路:從第依次構(gòu)造整個變形楊輝三維數(shù)組,沒有數(shù)值的地填充0。 缺點:浪費內(nèi)存,效率低)1const readli

5、ne = require (readline);2const rl = readline.createInterface (input: process.stdin,output :process.stdout6)78/ n 數(shù)rl.on(line, (str) = let n = Number(str)let resultArray = createTriangle (n);let pos = getEven(resultArray ,n)console.log(pos)1516)1718rl.on(close, () = 19rl.close();20)2122/構(gòu)造變形楊輝三functi

6、on createTriangle (n) let row = n;let col = 2 * n - 1;/初始化維數(shù)組let array = initArray(row,col);2930/初始化第元素let pos = Math.floor(col / 2);let firstLine =Array(col).fill(0);firstLine pos =1;array 0 =firstLine;3637/ 和 j=col-1for (let i = 1; i row; i+) for (let j = 0; j col; j+) 41if (j = 0)array ij = array

7、i - 1j + arrayi - 1j + 1 else if (j = col - 1) array ij = arrayi - 1j - 1 + arrayi - 1j else 46array ij = arrayi - 1j - 1 + arrayi - 1j + arrayi - 1j +eturn array525354/初始化維數(shù)組function initArray(row, col) let array = newArray(row);for (let i = 0; i row; i+) array i = newArray(col);for (l

8、et j = 0; j return _el % 2 = 0;)return index = -1 ? -1 : index + 1;答案: (思路:已知,第數(shù)據(jù),遞歸調(diào)獲取第n數(shù)據(jù)。條件:arrnm = arrn-1m+arrn-1m-1+arrn-1m-2。 缺點:函數(shù)調(diào)開,效率低)1const readline = require (readline);2const rl = readline.createInterface (input: process.stdin,output :process.stdout6)78/ n 數(shù)rl.on(line, (str) = let n = N

9、umber(str)let resultArray =getArr(n);13let pos = getEven(resultArray)console.log(pos)1617)1819rl.on(close, () = 20rl.close();21)222324/*n數(shù)組* param row 號*/2728function getArr(row) if (row = 1) /第2930return 1313233let col = 2 * row - 1;let arr new Array(col).fill(0); /當前數(shù)組長度,默認填0;34let preArr = getArr

10、(row -1);for (let j = 0; j return _el % 2 =0;48)49return index = -1 ? -1 : index + 1;5051HJ2計算某字母出現(xiàn)次數(shù)描述 寫出個程序,接受個由字母、數(shù)字和空格組成的字符串,和個字母,然后輸出輸字符串中該字母的出現(xiàn)次數(shù)。不區(qū)分寫,字符串長度于500。輸描述: 第輸個由字母和數(shù)字以及空格組成的字符串,第輸個字母。輸出描述: 輸出輸字符串中含有該字符的個數(shù)。例1輸:輸:ABCabc A輸出:2答案 (思路:正則匹配即可,忽略寫)1123456789const readline = require (readline

11、);const rl = readline .createInterface(input: process.stdin, output : process.stdout,)let inputStrArr = ; let index = 0;rl.on(line, (str) = inputStrArr index = str; index+;if (inputStrArr.length = 2) let reg = new RegExp(inputStrArr1, gi); let result = inputStrArr 0.match(reg); console .log(result)i

12、f (result) console .log(result.length) else console .log(0)rl.on(close, () = rl.close;)HJ8合并表記錄描述 數(shù)據(jù)表記錄包含表索引和數(shù)值(int范圍的正整數(shù)),請對表索引相同的記錄進合并,即將相同索引的數(shù)值進求和運算,輸出按照key值升序進輸出。輸描述: 先輸鍵值對的個數(shù) 然后輸成對的index和value值,以空格隔開輸出描述: 輸出合并后的鍵值對(多)例1輸:輸:40 10 21 23 40 31 23 4答案 (思路:每都存數(shù)組,如:“4”, “0 1”, “0 2”, “1 2”, “3 4”,根據(jù)數(shù)

13、據(jù)個數(shù)遍歷,使空格符分割,存到對象,對象key已經(jīng)存在,則value相加,否則新增對象屬性;最后遍歷對象輸出即可)1const readline = require (readline);2const rl = readline.createInterface (input: process.stdin,output :process.stdout,6)78rl.on(close, () = 9rl.close;10)11let inputArr =;let index = 0;14rl.on(line, (str) = inputArr index =str;index+;let num =

14、 Number(inputArr0);if (num + 1 = inputArr.length) let resultObj =;for (let i = 1; i 9rl.close;10)111213rl.on(line, (str) = 14let dataArr = getIegalStr(str)let pos = move(dataArr);console.log(pos.join(,)1819)2021/*22*獲取符合要求的字符串數(shù)據(jù)23*/function getIegalStr (str)let arr = str.split(;)26let reg = /ADWSd1,

15、2$/let result = ;for (let i = 0; i arr.length; i+) if (reg.test(arri) reg .lastIndex =0;result.push(arri);323334return result;353637/*37* 坐標移動* paramdataArr* returnsnumber40*/function move(dataArr) let origin = 0, 0;const len = dataArr.length;for (let i = 0; i len; i+) let str = dataArri;let num = N

16、umber(str.slice(1)switch (str.slice(0, 1) case A:origin 0 -=numbreak;case D:origin 0 +=numbreak;case W:origin 1 +=numbreak;case S:origin 1 -=numbreak;606162return origin;636465HJ77車進站描述 給定個正整數(shù)N代表車數(shù)量,0N rl.close;)let inputArr = ; rl.on(line, (str) = inputArr .push(str)if (inputArr.length = 2) let arr

17、 = inputArr1.split( )let allSeq = getLegalArray (arr); printArr(allSeq.sort(); /輸出字典排序)/*獲取合法的出棧序列步驟 1、獲取原始數(shù)組的全排列*2paramarrreturns*/原始數(shù)組function getLegalArray (arr) 3132333435363738394041424344454647484950515253545556575859const len = arr.length; let result = ;const originArray = JSON.parse(JSON.str

18、ingify(arr);function func(index = 0) for (let i = index; i len; i+) / 交換數(shù)組元素swap(arr, i, index); if (index len - 1) /index+1 后的元素全排列func(index + 1) else /console.log(arr);if (isLegal(arr, originArray ) /是否合法的出棧序列result .push(JSON.parse(JSON.stringify(arr)/恢復數(shù)組元素原來順序swap(arr, i, index);func(0); return result;* 交換數(shù)組i、j位置元素* paramarr* parami* paramj63*/6465function swap(arr, i, j) 66if (i = j)67return;68let temp = arri;arr i =arrj;arr j =temp;727374/* 從全排列中過濾合法的出棧序列* 1、待棧序列依次棧*2、棧頂元素和出棧序列隊頭元素較,相等則出棧;否則,繼續(xù)棧*3、棧序列全部棧,判斷棧中元素是否為空,為空:說明出棧序列事合法的序列,否則,不合法78*79*parampopQueue 待判斷的出棧序列(維數(shù)組、全排列)*parampus

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論