滴滴2018秋招程式設計題

2021-08-08 00:23:37 字數 1523 閱讀 5279

滴滴 2018秋招 程式設計題

醜數的定義是,只包含因子2、3和5的數稱作醜數。比如6和8是醜數,14不是醜數,因為含有因子7。輸入乙個整數n,輸出第n個醜數。我們認為第乙個醜數是1。

解析:

根據醜數的定義,我們可以知道醜數可以由另外乙個醜數乘以2,3或者5得到。因此我們建立乙個陣列,裡面的數字是排好序的醜數,每乙個醜數都是前面的醜數乘以2,3或者5得到的。這種思路的關鍵在於怎樣確保陣列裡面的數字是排序的。

假設醜數陣列中已經有若干個排好序的醜數,比如1,2,3,4,5。我們把當前醜數陣列中的最大數記為m,這裡m=5。我們接下來分析如何生成下乙個醜數。根據前面的介紹,我們知道這個醜數肯定是前面醜數陣列中的數字乘以2,3,5得到的。所以我們首先考慮把已有的每個醜數乘以2,在乘以2的時候,能夠得到若干個小於或者等於m的結果。由於是按照順序生成的,小於或者等於m的數肯定已經在醜數陣列當中了,我們不需要再次考慮;當然還會得到若干大於m的結果,但是我們只需要第乙個大於m的結果,因為我們希望醜數是按順序排列的,所以其他更大的結果可以以後考慮。我們把得到的第乙個乘以2以後得到的大於m的結果記為m2。同樣,我們把已有的每乙個醜數乘以3和5,能得到第乙個大於m的結果m3和m5。那麼m後面的那乙個醜數應該是m2,m3和m5當中的最小值:min(m2,m3,m5)。比如將醜數陣列中的數字按從小到大乘以2,直到得到第乙個大於m的數為止,那麼應該是2*2=4

c++**實現:

vector

nums=;

int uglynumber(int n)

return nums[n-1];

}

給定n個整數a_1, a_2, a_3, a_4, … , a_n,有多少個不重疊非空區間,使得區間內數字的xor結果為0。輸入乙個n,和n個數字,輸出滿足條件的區間個數。

示例:

輸入:

4 3 0 2 2

輸出:

2 解釋:[0] 和 [2, 2]兩個區間的數字xor都為0。

解析:

動態規劃。用dp[i]表示以i結尾的子陣列中,元素的xor結果為0的分割槽數量。

dp[i+1] = max ,其中j<=i, j~i的異或結果為0

最後dp[n]即為滿足條件的分割槽個數。

c++**實現:

#include 

#include

using

namespace

std;

int findxor(int *a,int n)

}return dp[n];

}int main()

京東2018秋招程式設計題

c 開發工程師京東 2018秋招程式設計題 後續更新。將乙個數n的各數字分成兩部分,兩部分之和相等,則稱這個數為神奇數。比如242分成 2,2 4 輸入乙個範圍 l,r 輸出這個範圍內神奇數的個數。示例 輸入 1,50 輸出 4解析 判斷乙個數是否是神奇數,首先應該獲取其各個數字,按照神奇數的定義,...

滴滴附加題(2018校招)

題目大意,有n個路口,r條路,每條路可以雙向走,希望求得從第乙個路口走到第n個路口需要的次最短路徑。輸入 第一行 兩個正整數,r和n 第二行到第r 1行每行輸入三個正整數,分別為起始路口號 終點路口號和距離。輸出 次最短距離。輸入樣例 4 4 1 2 100 2 3 150 2 4 200 3 4 ...

華為2018秋招程式設計題2 報數遊戲

100個人圍成一圈,每個人有乙個編碼,編號從1開始到100.他們從1開始依次報數,報到為m的人自動退出圈圈,然後下乙個人接著從1開始報數,直到剩餘的人數小於m。請問最後剩餘的人在原先的編號為多少?例如輸入m 3時,輸出為 58,91 輸入m 4時,輸出為 34,45,97 如果m小於等於1,則輸出 ...