((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 題目描述 給定一些字串,請寫乙個演算法,從中搜尋出包含您輸入的字串行的那些字串,按匹...