![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LEETCODE
ttu___
这个作者很懒,什么都没留下…
展开
-
236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” PAT上都是给遍历序列推LCA,所以其实用指针做还是第一次 记录父节点,找到根节点上第一个重复的节点。 class Solution { public: unordered_map<TreeNode*,TreeNode*> mp; vo原创 2020-05-10 00:50:27 · 95 阅读 · 0 评论 -
1282. 用户分组
有 n 位用户参加活动,他们的 ID 从 0 到 n - 1,每位用户都 恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes,其中包含每位用户所处的用户组的大小,请你返回用户分组情况(存在的用户组以及每个组中用户的 ID)。 你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的数据保证至少存在一种解决方案。 就还蛮迷惑的哦 分到贪心类里面官方题解也只有哈希没有贪心 暂时也想不出来贪心做法 class Solution { public: vector<vec原创 2020-05-09 19:33:03 · 126 阅读 · 0 评论 -
221. 最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 暴力法:扫描每一个位置,更新该位置的对应的边长。从现有的最大边长+1开始比较,到到达matrix边界时结束。如果可能的最大边长小于等于现有边长就直接返回。最后返回边长*边长。 class Solution { public: int side,wid,hei; void check(vector...原创 2020-05-08 03:09:43 · 119 阅读 · 0 评论 -
面试题 02.05. 链表求和
给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 正向存放也是一样的,正向逆向来一遍就行了 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int len1=0,len...原创 2020-05-07 17:57:53 · 80 阅读 · 0 评论 -
142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 感觉自己是铁five了 vector搜索 class Solution { public: ListNode *detectCycle(ListNode *head) { vector<ListNode*> lis; while(head!=NULL){ ...原创 2020-05-07 17:01:40 · 74 阅读 · 0 评论 -
98. 验证二叉搜索树
今天的题,验证二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。(也就是说[1,1]应该是false) 所有左子树和右子树自身必须也是二叉搜索树。 一个月前写过,现在的我揣摩不透当时的思维 今天的:中序遍历之后验证序列是否递增,应该是比较自然的思路 class Solution { public: vector&l...原创 2020-05-05 00:56:35 · 57 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 就……二分 class Solution { public: int findleft(int l,int r,int target,vector<int>&am...原创 2020-05-03 04:33:44 · 126 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 多趟扫描也不好实现吧难道要一个个从尾元素开始逼近倒数第123…k个元素吗 按顺序push进vector,取前面的元素改一下next指针就完了,如果要删除的是头元素就直接返回next。不知道这道题为啥能成中等(也可能是这题目另有玄机我没看懂 ) class Solution { public: ...原创 2020-05-03 04:16:57 · 96 阅读 · 0 评论 -
42. 接雨水
PAT刷了就剩几题了,开始发一点力扣的解题记录。 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 之前好像看到字节面试题有这道 最开始是想,每次都关注最底下那一行,计算完一行的雨水数后将这一行高度降低1,直到所有高度都为0或只有一个高度不为0。显然当高度很大时容易超时,用例最后一个不通过。 int trap(vector<int>&...原创 2020-05-03 04:00:51 · 171 阅读 · 0 评论 -
927. 三等分
算1的个数,和最后一个1的位置(算1后面应该跟几个0),然后从头开始分割,然后比较是不是每个部分都一样。 class Solution { public: vector<int> threeEqualParts(vector<int>& A) { vector<int> res={-1,-1}; int count...原创 2020-04-23 11:20:40 · 93 阅读 · 0 评论 -
LC #815. 公交路线
今天的题,用例都是有序的,可以不加排序那句(少个60ms)。 看了题解的思路写的,先重构一个图,每一条路线看作一个节点,然后bfs。 刚开始本地跑起来和提交的结果不一样,后来发现是vis没有初始化,在codeblocks看未初始化的bool是一个整数,可能是因为这个原因吧。 class Solution { public: int numBusesToDestination(vector&...原创 2020-04-23 10:15:22 · 119 阅读 · 0 评论 -
LC #354. 俄罗斯套娃信封问题
力扣的题有空再探索复杂度更低的做法 class Solution { public: static bool cmp(vector<int> a,vector<int> b){ if(a[0]!=b[0])return a[0]<b[0]; else return a[1]<b[1]; } int maxE...原创 2020-04-22 03:13:00 · 87 阅读 · 0 评论 -
leetcode295.数据流的中位数
剑指offer面试题41 / leetcode295.数据流的中位数 最自然的想法一是每次sort后下标取值,但是这样会超时。其次想到BST和AVL,但是自己写实在是太麻烦了(真考到也没时间写) 每次sort会超时,用优先队列来做。sort的时间复杂度为nlog(n)。priority_queue是用堆实现的,每次插入并向上调节的时间复杂度是log(n)。(因为堆深度最多为log(n),最多向上调...原创 2020-03-19 20:15:48 · 84 阅读 · 0 评论 -
leetcode32. 最长有效括号
换换口味做一下leetcode的题 最最普通的版本,时间和内存消耗都相对比较大。从头到尾扫描vector,合并相邻或中间隔着成对括号的左和右,当vector长度不变时计算所有标记成对的节点的数目,即最长子串。 class Solution { public: struct Node{ int state=0;//0为成对,-1为左,1为右 int num=0...原创 2020-03-19 19:03:19 · 73 阅读 · 0 评论