題目描述:給定一個(gè)數(shù)列a1,a2,a3…an,輸出他所有的全排列。 算法設(shè)計(jì)描述: 1、獲取當(dāng)前的一種排列,用start,end分別表示該排列的列頭,列尾; 2、判斷start是否和end相等,若相等,執(zhí)行3,否則執(zhí)行4; 3、將當(dāng)前排列和已出現(xiàn)過(guò)的排列進(jìn)行比較,判斷當(dāng)前排列是否已經(jīng)出現(xiàn)過(guò),若出現(xiàn)過(guò),將其忽略,否則將其進(jìn)行存儲(chǔ); 4、從j=start開(kāi)始到end結(jié)束,對(duì)排列中的每一個(gè)字符和a[start]進(jìn)行比較,若a[j]==a[start]&&j!=start,跳過(guò),否則,交換當(dāng)前排列中位于start和j處的字符,再將start=start+1,并跳轉(zhuǎn)到1,再將位于j和start處的字符交換回來(lái); 5、輸出全部的排列。
面試官問(wèn)的面試題: 對(duì)工資有啥要求,能不能適應(yīng)加班,行不行從頭學(xué)起