LeetCode
一拳一个哇哦怪
写点学习笔记为主啦!
展开
-
剑指 offer32(一、二、三)
剑指 Offer 32 - I. 从上到下打印二叉树思路:利用双端队列,每次从双端队列的队头取出节点,如果该节点存在左子树和右子树,则加入队尾。 vector<int> levelOrder(TreeNode* root) { if(root==nullptr) return {}; vector<int>res; deque<TreeNode*>dequeTreeNode; d原创 2020-12-29 09:20:45 · 172 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树输入二叉树的前序和中序遍历,重建二叉树。假设输入的前序遍历和中序遍历都不包含重复的数字。例如:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回的二叉树: 3 / \ 9 20 / \ 15 7前序遍历的第一个元素为树的根节点 node 的值;在中序遍历中搜索根节点 node 的索引,可将中序遍历划分为[左子树|根节点|右子树]。根据中序遍历中的左原创 2020-12-29 09:19:13 · 67 阅读 · 0 评论 -
剑指offer16
剑指 Offer 16. 数值的整数次方对于这个问题,首先考虑:底数为 1,指数为任何数结果都为 1;指数为 0,底数为任何数时结果都为 1;如果指数n为负数呢?可以转化成底数为原底数的相反数的计算。另外,需要考虑如何计算整次方。如果让 n 个底数逐个相乘,复杂度太大。这个时候,可以考虑二分法。n 为奇数,xn=xn/2∗xn/2∗xx^n=x^{n/2}*{x^{n/2}}*xxn=xn/2∗xn/2∗x;n为偶数,xn=xn/2∗xn/2x^n=x^{n/2}*x^{n/2}xn=x原创 2020-12-24 02:44:48 · 202 阅读 · 0 评论 -
剑指 offer20
剑指 Offer 20. 表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。首先,我们可以看到,对于一个字符串,可能存在小数点,正负号,指数符号,数值。并且在字符串的开头和末尾部分还可能有若干个空格。因此,对于一个字符串,首先要略过开头和末尾的空格。bool isNumber(st原创 2020-12-24 02:44:35 · 347 阅读 · 0 评论 -
剑指 offer21
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面双指针设置双指针,left 指向 数组的开始,right 指向数组末尾位置。对于 left,从前往后找,找到第一个偶数的位置;对于 right,从后往前找,找到第一个奇数的位置;当 left<right时,交换这两个位置的元素,再继续进行。vector<int> exchange(vector<int>& nums) { int left=0,right=nums.size()-1;原创 2020-12-24 02:44:02 · 445 阅读 · 2 评论 -
用最少数量的箭引爆气球问题(leetcode452)
题目描述:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆原创 2020-11-23 19:37:30 · 93 阅读 · 0 评论 -
根据身高重建队列问题(leetcode第406题)
406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]思路:对于两组数据 person1和 person2,有两种情况:person原创 2020-11-23 17:41:32 · 275 阅读 · 0 评论 -
三数之和问题(leetcode15)
15. 三数之和找出一个数组中是否存在三个元素a,b,c,使得a,b,c=0。找出满足条件切 a,b,c不重复的三元组。找到的三元组也不能重复。数组长度<3,不存在这样的三元组。对数组进行排序,遍历数组,当前元素位置为 i,设定左右指针,左指针 lll 指向第一个比当前元素的大的位置,右指针 rrr 指向数组末尾的一个位置。如果 nums[i]+nums[l]+nums[r]==0, 这个时候如果要继续走下去,需要消除重复的情况。如果当前 nums[l]=nums[l+1] 或者 num原创 2020-11-23 17:39:50 · 197 阅读 · 0 评论 -
435.无重叠区间问题
435. 无重叠区间首先看题目:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。输入: [原创 2020-11-23 15:35:00 · 209 阅读 · 0 评论 -
最短单词距离(243、244、245)
LeetCode最短单词距离问题(243、244、245)243. 最短单词距离 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。可以假设 word1 不等于 word2,并且 word1 和 word2 都在列表里。暴力法遍历数组找到 i1 和 i2 在数组中所有出现的位置,并检查∣i1−i2∣|i_1-i_2|∣i1−i2∣是否比当前记录的最小值要小。只遍历一次我们可以记录两个下标 i1 和 i2 来显著提高暴力的时间复杂度,我们保存原创 2020-11-06 01:24:42 · 1050 阅读 · 0 评论