關於瀑布流陣列的一道面試題

2021-08-20 17:53:46 字數 966 閱讀 6848

今天看到一道題目,當時不會,聽了講解之後,覺得很有意思,先記錄下來。

原題如下:

20 個隨機數字,放到 3 個陣列中 arr1, arr2,arr3 保證 3 個陣列 的和相差最小;

先來解釋一下這個題目:

就是把20個隨機數放在3個陣列中,然後把每個陣列中的值相加,最後再把每個陣列中的和相減,得到差值是最小的。如果要想有這種效果,就得每個陣列中的和都差距不大。

那麼這要怎麼做呢?

如果用過瀑布流的同學應該知道,傳進來的大小是不一樣的,所以每列的高度也不一樣,不能讓每列太長或者太短,所以,我們就看那列的高度最短,就把新的放在短的那一列上。

同樣,這題原理和上面的瀑布流一樣的,我們可以判斷哪個陣列裡面的數值最小,然後把新的數值放在這個陣列裡面。

// 先得到20個隨機數,放在arr陣列

var length = 20;

var arr = ;

for(var i = 0; i < length; i++)

// 建立3個陣列,將arr陣列中的3個數分別放在三個陣列中

var arr1 = ,

arr2 = ,

arr3 = ;

arr1.push(arr[0]);

arr2.push(arr[1]);

arr3.push(arr[2]);

// 在迴圈裡把各個陣列的和求出來,再比較,把新的值放在和小的陣列內

for(var i = 3; i < arr.length; i++)

// 然後建立求和的方法

function add(newarr)

return size;

} // 此時這個時候的3個陣列的和的差值就是最小的了

console.log(add(arr1));

console.log(add(arr2));

console.log(add(arr3));

關於陣列指標的一道面試題

看下面一道面試題 include include int main void int ptr int a 1 printf d,d a 1 ptr 1 return 0 輸出結果為 2,5 在這裡主要是考察 a 1 和 a 1的區別了。很顯然 a 1 取的是a 1 然而 a 1取的是什麼呢?a不是首...

關於C陣列指標的一道面試題

本文由 lonelyrains c語言指標是經典問題了,還是做錯啊 int main int p int a 1 a陣列的位址加1,是以a陣列的大小為乙個單位 char pc1 char a 1 同上,只是pc1變成了字元指標,下次pc1加減運算是乙個位元組大小為乙個單位 char pc2 char...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...