題目大致如下:
有1-n共n個數,順序不定,需要你寫出乙個不含有」順子「的順序;
」順子「定義如下:有任意下標i,j,k,滿足i2=a[i]+a[k];
示例:輸入:4
輸出:1 3 2 4
(分析:
1+2=21.5
1+4=22.5
3+4=23.5
均不存在這樣的數構成順子,所以滿足
)思路如下:
首先,由於 (奇數+偶數)/2 必為小數,可以先把奇數存放在左部,偶數存放在右部,若i屬於左部,k屬於右部則一定無法構成順子,接下來考慮左部或右部內取i,j,k得情況
根據以上的思路繼續對奇數部分和偶數部分進行相似的劃分
對於奇數部分繼續劃分的兩個部分奇左和奇右滿足奇左中任意乙個數加上奇右中的任意乙個數都是4的倍數,也即,他們的和一定是乙個偶數的二倍,可以發現這時這樣的構造滿足了奇數內部無法取出順子的情(因為全是奇數,所以偶數的二倍必不滿足),接下來要做的就是繼續處理奇左,奇右內部取完i,j,k的情況。
對於偶數也是同樣的情況,構造偶左偶右使得兩個集合各取乙個元素之和都不是4的倍數,也即都是奇數的二倍。
為了便於理解,取n=16進行說明
a[n]=(順序無所謂,暫時全部按照公升序)
首先進行奇數偶數的劃分
al =
ar=接著對於left,right分別進行劃分
all=
alr=
1 3
5 7
9 11
13 15
arl=
arr=
2 46 8
10 12
14 16
到了這一步已經可以進行初步推測接下來要做的就是繼續對all,alr,arl,arr進行劃分,
不妨舉n=29這樣略大的例子,可以右上進行這樣的猜測,劃分是基於2的冪進行的,最終的終止條件應為左右部分的數的個數均小於三,此時內部不存在這樣的i,j,k,且各個部分之間都不滿足。以n=29為例
第一次:
1,3,5,7,,,29
2,4,6,8,,,28
第二次:
1,5,9,,,29
3,7,11,,,27
2,6,,,26,
4,8,,,28,
第三次1,9,17,25
5,13,21,29
3,11,19,27
7,15,23
2,10,18,26
6,14,22
4,12,20,28
8,16,24
第四次1,17
9,25
5,21
13,29
3,19,
11,27…終止
可以得出結論對於n需要劃分[logn]次,且數的間隔為pow(2,[logn]),每個內部之間順序無所謂,只需要將各個部分連線即為所需的答案。
阿里筆試糾錯
1 什麼是 cookie cookie是一段文字資訊,伴隨著請求和響應頁面在伺服器和瀏覽器之間進行傳遞。web應用程式都可以獲得 cookie 的資訊。當使用者訪問某個站點的時候,伺服器返回的不僅僅是頁面的資訊,還返回相關的 cookie 資訊,然後客戶端就會此 cicookie 快取在本地。當使用...
阿里筆試 20190412
可能有些人讀不懂題目,在這,筆者先給大家解釋一下題目 題目自帶的測試樣例非常簡單 1 0.999999 這個輸入樣例對應的輸出是1.0000 就是說第一輪,小明有0.999999概率分得獎金,剩下的0.000001的概率是進行下一輪 不是小華分到獎金的概率 那麼第二輪,小明獲得獎金的概率仍舊是第一輪...
2020 4 13 阿里筆試
有n個小動物 1 n號 參與投票。再給定n個數,代表每個小動物崇拜情況。第i個數代表第i個動物的崇拜情況。如果是0,代表它不崇拜任何動物,只能給自己投票。如果不是0,假設是j,那麼它投票時可能給自己投,可能跟隨j投。請解出每個小動物最高可能的票數。案例 4 0 1 2 1 第一行4,表示一共四個動物...