classSolution{public:inttrailingZeroes(int n){int ans =0;while(n){
n /=5;
ans += n;}return ans;}};
793. 阶乘函数后 K 个零
代码实现(自解)
classSolution{public:intzeta(long x){int res =0;while(x){
res += x /5;
x /=5;}return res;}longlonghelp(int k){longlong r =5LL* k;longlong l =0;while(l < r){longlong mid =(l + r +1)/2;if(zeta(mid)<= k){
l = mid;}else{
r = mid -1;}}return l;}intpreimageSizeFZF(int k){if(k <=1)return5;if(k ==5)return0;returnhelp(k)-help(k -1);}};
155. 最小栈
代码实现(自解)
classMinStack{private:
stack<longlong> myStack;longlong minNum;public:MinStack(){}voidpush(int val){if(myStack.empty()){
myStack.push(val);
minNum = val;}elseif(val >= minNum){
myStack.push(val);}else{
myStack.push(val +(val - minNum));
minNum = val;}}voidpop(){if(myStack.empty())return;if(myStack.top()< minNum) minNum = minNum +(minNum - myStack.top());
myStack.pop();}inttop(){returnmax(myStack.top(), minNum);}intgetMin(){return minNum;}};/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
1249. 移除无效的括号
代码实现(自解)
classSolution{public:
string minRemoveToMakeValid(string s){
string ans;
stack<char> check;for(char& c : s){if(c =='(') check.push(c);elseif(c ==')'){if(check.empty()|| check.top()!='('){
c ='*';}else{
check.pop();}}}int n = s.size();while(!check.empty()&& n--){if(s[n]=='('){
s[n]='*';
check.pop();}}for(char c : s){if(c !='*') ans += c;}return ans;}};