
Leetcode
刷题笔记
「已注销」
这个作者很懒,什么都没留下…
展开
-
Leetcode226 翻转二叉树
递归调用代码:class Solution {public: TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; invertTree(root->left); invertTree(root->right); TreeNode* p=root->left; root->left=root->right;原创 2022-03-03 16:04:25 · 298 阅读 · 0 评论 -
Leetcode160 相交链表
文章目录双指针哈希集合关于unordered_set双指针遍历单链表A和单链表B,得到其长度之差gap。此时指针n1和n2都指向了两条链表的最后一个节点,如果指向的不是同一个,则没有相交节点,返回NULL。否则,将长链表的指针移动gap距离,此时longlist和shortlist到第一个相交节点的距离是相等的。依次往后移找到即可。代码:class Solution {public: ListNode *getIntersectionNode(ListNode *headA, List原创 2022-02-27 10:52:26 · 681 阅读 · 0 评论 -
Leetcode121 买卖股票的最 佳时机
文章目录暴力解法一次遍历暴力解法class Solution {public: int maxProfit(vector<int>& prices) { int ans = 0; for (int i=0; i<prices.size(); ++i) for (int j=i+1; j<prices.size(); ++j) ans = max(ans, prices[j] - prices[i]);原创 2022-02-26 16:59:27 · 189 阅读 · 0 评论 -
Leetcode155 最小栈
代码:class MinStack {public: stack<int> s1; stack<int> s2; MinStack() { s2.push(INT_MAX); } void push(int val) { s1.push(val); s2.push(min(val,s2.top())); } void pop() { s1.原创 2022-02-26 15:16:21 · 188 阅读 · 0 评论 -
Leetcode练习 快慢指针
文章目录141.环形链表142.环形链表2141.环形链表思路:当head为空时,返回false;设置两个指针,一个快指针,一个慢指针;如果快指快指针先指到NULL,则链表中没有环;如果链表中有环,两个指针最后一定会相遇。fast每次走三步,slow每次走一步可以吗?不行,进入环之后,fast每次走两步,slow每次走一步,每走一步,fast和slow的距离减少1,保证了fast和slow不会错过。如果fast每次走三步,slow每次走一步,一些情况下,fast会错过slow。所以.原创 2022-02-24 21:27:38 · 380 阅读 · 0 评论 -
Leetcode136 只出现一次的数字
文章目录异或运算代码实现异或运算1)任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a。2)任何数和其自身做异或运算,结果是 0,即a⊕a=0。3)异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b代码实现class Solution {public: int singleNumber(vector<int>& nums) { int n=0; for(int i=0;i<nums.原创 2022-02-24 19:46:52 · 147 阅读 · 0 评论 -
Leetcode101 对称二叉树
文章目录递归算法迭代算法递归算法判断一棵二叉树是否为对称二叉树,首先判断根节点是否存在。根节点存在则比较左右两棵子树是否子树。左子树和右子树根节点若存在应当相等,再比较左子树的左孩子和右子树的右孩子,左子树的右孩子和右子树的左孩子。代码实现:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2022-02-19 15:59:54 · 345 阅读 · 0 评论 -
Leetcode94 二叉树的中序遍历
文章目录二叉树的中序遍历递归解法迭代解法二叉树的中序遍历中序遍历:先访问左子树,然后访问根节点,再访问右子树。递归解法代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {}原创 2022-02-18 21:57:19 · 72 阅读 · 0 评论 -
Leetcode70 爬楼梯
代码:class Solution {public: int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; vector <int> result(n); result[0]=1; result[1]=2; for(int i=2;i<result.size();i++){ result[原创 2022-02-18 20:51:37 · 170 阅读 · 0 评论 -
Leetcode20 有效的括号
有效的括号栈的定义栈是只允许在一端进行插入或者删除的线性表。栈顶是线性表允许插入或删除的一端,栈底是不允许进行插入和删除的一端。栈的操作特性可以概括为后进先出。STL中stack的用法empty();// 堆栈为空则返回真pop(); // 移除栈顶元素push(); //在栈顶增加元素size(); // 返回栈中元素数目top(); //返回栈顶元素解题思路利用栈后进先出的特性若碰到’(’ ‘[’ '{'时把对应的括号压入栈中若是可匹配的括号,将栈顶元素移除;若不是可匹配的原创 2022-01-31 16:31:33 · 733 阅读 · 0 评论