- 今天开始学习数据结构与算法
- 今天学习了刚开始数据结构的基本知识点,时间与空间复杂度,一部分的线性表。(主要看b站的视频)
- 晚上开始刷题,,,
- 第一道题是:
-
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
这道题就是有关线性链表的题目,我是用c语言写的,我用一个数组,把链表上面的值都存放在数组里面,最后再去判断是否是回文链表。 -
AC代码: -
-
第二道题链接:力扣 -
这道题目跟之前做的括号匹配问题是一样的,之前用的是c写的,现在学了栈之后可以利用先进后出的方式,进行匹配,如果括号匹配成功就出栈,是左边的括号是入栈,如果是右边的括号,若顶栈和右边的括号不匹配则直接返回false,具体看代码。 -
代码:
class Solution {
public:
bool isValid(string s) {
int n = s.size();
stack<char>a;
for(int i = 0;i<n;i++)
{
if(a.empty()&&s[i]==')'||a.empty()&&s[i]==']'||a.empty()&&s[i]=='}')
return false;
if(s[i]=='('||s[i]=='{'||s[i]=='[')
a.push(s[i]);
else
{
if(a.top()=='('&&s[i]==')'||a.top()=='{'&&s[i]=='}'||a.top()=='['&&s[i]==']')
a.pop();
else
return false;
}
}
if(a.empty())
return true;
else
return false;
}
};
|