一、給定乙個無序陣列,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:o(n),空間複雜度:o(1)
輸入描述:
無序整數陣列a[n]
輸出描述:
滿足條件的最大乘積
示例1
輸入 3 4 1 2
輸出 24
public
class
main else
if(cur > max[1]) else
if(cur > max[2])
if(cur < min[0]) else
if(cur < min[1])
}system.out.println(math.max((long)min[0]*min[1]*max[0], (long)max[0]*max[1]*max[2]));
sc.close();
}}
二、有兩個用字串表示的非常大的大整數,算出他們的乘積,也是用字串表示。不能用系統自帶的大整數型別。
輸入描述:
空格分隔的兩個字串,代表輸入的兩個大整數
輸出描述:
輸入的乘積,用字串表示
示例1
輸入 72106547548473106236 982161082972751393
輸出 70820244829634538040848656466105986748
public
class
main
}stringbuffer sb = new stringbuffer();
for(int i = 0; i < result.length; i++)
}sb.reverse();//處理順序是尾部在頭,所以應該反轉
while(sb.length() > 0 && sb.charat(0) == '0')
system.out.println(sb.tostring());
}}
三、六一兒童節,老師帶了很多好吃的巧克力到幼兒園。
每塊巧克力j的重量為w[j],對於每個小朋友i,當他分到的巧克力大小達到h[i] (即w[j]>=h[i]),他才會上去表演節目。
老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w[i]> 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。
輸入描述:
第一行:n,表示h陣列元素個數
第二行:n個h陣列元素
第三行:m,表示w陣列元素個數
第四行:m個w陣列元素
輸出描述:
上台表演學生人數
示例1
輸入 3
2 2 3
2 3 1
輸出 1
public
class
main
int m = sc.nextint();
int w = new
int[m];
for(int i = 0; i < m;i++)
sc.close();
//給需求最少的人最小的巧克力
arrays.sort(h);
arrays.sort(w);
int res = 0;
for(int i = m - 1, j = n - 1; i >= 0 && j >= 0; j--)
}system.out.println(res);
}}
四、假設乙個探險家被困在了地底的迷宮之中,要從當前位置開始找到一條通往迷宮出口的路徑。
迷宮可以用乙個二維矩陣組成,有的部分是牆,有的部分是路。
迷宮之中有的路上還有門,每扇門都在迷宮的某個地方有與之匹配的鑰匙,只有先拿到鑰匙才能開啟門。
請設計乙個演算法,幫助探險家找到脫困的最短路徑。
如前所述,迷宮是通過乙個二維矩陣表示的,每個元素的值的含義如下
0-牆,1-路,2-探險家的起始位置,3-迷宮的出口,大寫字母-門,小寫字母-對應大寫字母所代表的門的鑰匙
輸入描述:
迷宮的地圖,用二維矩陣表示。第一行是表示矩陣的行數和列數m和n
後面的m行是矩陣的資料,每一行對應與矩陣的一行(中間沒有空格)。m和n都不超過100, 門不超過10扇。
輸出描述:
路徑的長度,是乙個整數
輸入 5 5
02111
01a0a
01003
01001
01111
輸出 7
class point
}public
class
main
if(map[i][j] == '3') }}
system.out.println(bfs(map, m, n, startx, starty, endx, endy));
}private
static
intbfs(char map, int m, int n, int startx, int starty, int endx, int endy) , , , };//每行乙個方向
int keys = new
int[m][n][1024];//keys存路徑長度。最多10把鑰匙,用十個01串存獲取鑰匙情況
for (int i = 0;i < m; i++)}}
q.add(new point(startx, starty, 0));
keys[startx][starty][0] = 0;
while (!q.isempty())
for (int i = 0; i < 4; i++)
if(keys[x][y][key] != -1)
if(map[x][y] >= 'a' && map[x][y] <= 'z')
if (map[x][y] >= 'a' && map[x][y] <= 'z')
}keys[x][y][key] = keys[next.x][next.y][next.key]+1;//標記是否走過,max表示未走過
q.add(new point(x,y,key));}}
return -1;
}}
網易2017秋招程式設計題
小易有乙個圓心在座標原點的圓,小易知道圓的半徑的平方。小易認為在圓上的點而且橫縱座標都是整數的點是優雅的,小易現在想尋找乙個演算法計算出優雅的點的個數,請你來幫幫他。例如 半徑的平方如果為25 優雅的點就有 3,4 4,3 0,5 5,0 一共12個點。輸入描述 輸入為乙個整數,即為圓半徑的平方,範...
網易2017秋招程式設計題
第一題 如果乙個數字序列逆置之後跟原序列是一樣的就稱這樣的數字串行為回文序列。例如 是回文序列,不是回文序列。現在給出乙個數字序列,允許使用一種轉換操作 選擇任意兩個相鄰的數,然後從序列移除這兩個數,並用這兩個數字的和插入到這兩個數之前的位置 只插入乙個和 現在對於所給序列要求出最少需要多少次操作可...
搜狐2017秋招程式設計題
public class main system.out.println res sc.close 二 給定乙個十進位制的正整數number,選擇從裡面去掉一部分數字,希望保留下來的數字組成的正整數最大。輸入描述 輸入為兩行內容,第一行是正整數number,1 length number 1000。...