第一题:括号的最大嵌套深度
力扣链接:https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/
题解
这道题可以用栈的思想来解决,我们用一个计数器统计栈的大小当我们遇到左括号“(”就入栈并将计数器加一,接着我们用该计数器值与我们设定的最大嵌套深度作比较,如果计数器值更大的话就将计数器值赋给最大嵌套深度当我们遇到右括号“)”就将栈顶的左括号出栈,并将计数器减一。最后得到的就是最大的括号嵌套深度。
代码如下:
int maxDepth(char * s){
int i, count = 0, depth = 0, sz = 0;
sz = strlen(s);
for (i = 0; i < sz; i++) {
if (s[i] == '(') {
++count;
if (depth < count) {
depth = count;
}
} else if (s[i] == ')') {
--count;
}
}
return depth;
}
第二题:删除链表的中间节点
力扣链接:https://leetcode.cn/problems/delete-the-middle-node-of-a-linked-list/
题解
我们可以用快慢指针法来做,快指针每次跳过两个节点,慢指针每次跳过一个节点,当快指针指向链表的结尾时,慢指针指向的就是链表的中间节点。
代码如下:
struct ListNode* deleteMiddle(struct ListNode* head)