20屆攜程秋招筆試

2021-09-26 21:08:57 字數 1433 閱讀 4535

((ab)cd)第一次翻轉----->(bacd)-------> dcab
思路:非右括號入棧,右括號出棧直到遇到左括號,然後剛出棧的除左括號入棧

public

static string reverse

(string str)

else

s ="";

while

(!stack.

isempty()

&&stack.

peek()

!='(')if

(stack.

isempty()

||stack.

pop()!=

'(')

//將出棧的元素再次壓棧

int l = s.

length()

;for

(int j=

0;j} s ="";

while

(!stack.

isempty()

)//注意不是s = s + stack.pop();

s = stack.

pop(

)+ s;

}return s;

}

給定乙個非負整數陣列和乙個整數 m,你需要將這個陣列分成 m 個非空的連續子陣列。設計乙個演算法使得這 m 個子陣列各自和的最大值最小。

注意:陣列長度 n 滿足以下條件:

1 ≤ n ≤ 1000

1 ≤ m ≤ min(50, n)

示例:

輸入:

nums = [7,2,5,10,8]

m = 2

輸出:18

解釋:一共有四種方法將nums分割為2個子陣列。

其中最好的方式是將其分為[7,2,5] 和 [10,8],

因為此時這兩個子陣列各自的和的最大值為18,在所有情況中最小。

思路:由題意可知:子陣列的最大值是有範圍的,即在區間[max(nums),sum(nums)]之中。

令l=max(nums),h=sum(nums),mid=(l+h)/2,計算陣列和最大值不大於mid對應的子陣列個數cnt(這個是關鍵!)

如果cnt>m,說明劃分的子陣列多了,即我們找到的mid偏小,故l=mid+1;

否則,說明劃分的子陣列少了,即mid偏大(或者正好就是目標值),故h=mid。

int

splitarray

(vector<

int>

& nums,

int m)

while

(l(cnt>m)

l = mid +1;

else

h = mid;

}return l;

}

攜程產品經理筆試題 2020秋招

題型 20道英文選擇題 2道簡答題 選擇題部分主要考察的數量關係 材料分析和語言理解,跟行測差不多,但是我沒想到是全是英文的,天哪,太久沒看英文本母了,看得讓我很跳躍,顯然基本涼涼了。簡答題1 飯卡還可以有哪些功能,講明優先順序和原因?我先說下,我的答案 1 充值消費功能 比如食堂消費 學校商鋪消費...

攜程2021春招筆試

就2道演算法題 因為第二題不會,要用ac自動機,沒寫過就放棄了。第一題 為了尋找最佳拍檔,我們定義兩人名字的緣分值 兩人名字左對齊後,對應位置字的拼音的緣分值之和。對於兩個拼音s1 s2,通過剔除一些字元使得留下的子串一模一樣,被剔除字元之和的最小值即為兩個拼音的緣分值。求給定兩人名字的緣分值。提交...

攜程技術類2018屆春招筆試程式設計

攜程技術類2018屆春招 安卓開發工程師 程式設計題 20分 1 1有序字串搜尋 時間限制 c c 語言 1000ms 其他語言 3000ms 記憶體限制 c c 語言 204800kb 其他語言 729088kb 題目描述 給定一些字串,請寫乙個演算法,從中搜尋出包含您輸入的字串行的那些字串,按匹...