自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 Leetcode 108. 将有序数组转换为二叉搜索树

题目描述给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++/** * Definition for

2021-02-25 16:24:43 48

原创 Leetcode 101. 对称二叉树

题目描述给定一个二叉树,检查它是否是镜像对称的。示例:C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), l

2021-02-25 15:47:40 38

原创 Leetcode 4. 寻找两个正序数组的中位数

题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路根据中位数的定义,当 m+nm+n 是奇数时,中位数是两个有序数组

2021-02-25 14:54:41 34

原创 Leetcode 257. 二叉树的所有路径

题目描述给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNod

2021-02-23 17:00:14 44

原创 Leetcode 100. 相同的树

题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(

2021-02-23 13:51:19 171

原创 Leetcode 面试题 17.12. BiNode

题目描述二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。注意:本题相对原题稍作改动示例:输入: [4,2,5,1,3,null,6,0]输出: [0,null,1,null,2,null,3,null,4,null,5,null,6]来源:力扣(LeetCode)链接:https://l

2021-02-19 17:32:50 88

原创 Leetcode 24. 两两交换链表中的节点

题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换输入示例一:head = [1,2,3,4]输出:[2,1,4,3]C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} *

2021-02-19 16:24:13 37

原创 Leetcode 1004. 最大连续1的个数 III

题目描述给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释:[1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii著作

2021-02-19 14:15:31 66 2

原创 Leetcode 13. 罗马数字转整数

题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

2021-02-19 09:32:53 32

原创 Leetcode 123. 买卖股票的最佳时机 III

题目描述给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:prices = [3,3,5,0,0,3,1,4]输出:6解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票

2021-02-18 11:31:11 107

原创 Leetcode 121. 买卖股票的最佳时机

题目描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是

2021-02-18 10:28:26 123

原创 Leetcode 11. 盛最多水的容器

题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C+

2021-02-18 09:52:27 26

原创 Leetcode 136. 只出现一次的数字

题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++class

2021-02-17 11:05:42 48

原创 Leetcode 566. 重塑矩阵

题目描述在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行

2021-02-17 10:30:37 35

原创 Leetcode 70. 爬楼梯

题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/climbing-stairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++class Solution {

2021-02-16 18:37:55 36

原创 Leetcode 169. 多数元素

题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++class Solution { //这道题对我来说,难在如何将空

2021-02-16 13:09:46 50

原创 Leetcode 338. 比特位计数

题目描述给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/counting-bits著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++我的思路:代价高些class Solution

2021-02-16 12:01:51 38

原创 Leetcode 561. 数组拆分 I

题目描述给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:(1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3(1, 3),

2021-02-16 10:57:42 85

原创 Leetcode 236. 二叉树的最近公共祖先

题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。来源:力扣(LeetCode)链接:https://leetco

2021-02-16 10:44:31 34

原创 Leetcode 448. 找到所有数组中消失的数字

题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-numb

2021-02-15 15:33:07 42

原创 Leetcode 238. 除自身以外数组的乘积

题目描述给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。C++class Solution {public: vector&

2021-02-15 15:09:47 40

原创 Leetcode 119. 杨辉三角 II

题目描述给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。C++class Solution {public: vector<int> getRow(int rowIndex) { vector<vector<int>> a; for(int i=0;i<=rowIndex;i++){ vector<int> tem

2021-02-15 14:26:29 32

原创 Leetcode 118. 杨辉三角

题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。C++class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> a; for(int i=0;i<numRows;i++){ vector

2021-02-15 14:21:51 25

原创 Leetcode 832. 翻转图像

题目描述给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [[1,0,0],[0,1,0],[1,1,1]]解释: 首先翻转每一行: [[0,1,1],

2021-02-15 13:33:42 48

原创 Leetcode 122. 买卖股票的最佳时机 II

题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价

2021-02-15 11:43:31 43

原创 Leetcode 714. 买卖股票的最佳时机含手续费

题目描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解释: 能够达到的最大利润:在此处买

2021-02-15 11:39:00 80

原创 Leetcode 1375. 灯泡开关 III

题目描述房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着的。在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。灯的颜色要想 变成蓝色 就必须同时满足下面两个条件:灯处于打开状态。排在它之前(左侧)的所有灯也都处于打开状态。请返回能够让 所有开着的 灯都 变成蓝色 的时刻 数目 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bulb-switcher-iii

2021-02-15 10:34:04 161

原创 Leetcode 769. 最多能完成排序的块

题目描述数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [4,3,2,1,0]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。来源:力扣(LeetCode)链接:http

2021-02-15 09:59:40 99

原创 Leetcode 1448. 统计二叉树中好节点的数目

题目描述给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr),

2021-02-13 13:32:41 90

原创 Leetcode 1315. 祖父节点值为偶数的节点和

题目描述给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回 0 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-nodes-with-even-valued-grandparent著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++/** * Definition for a

2021-02-13 12:01:43 95

原创 Leetcode 695. 岛屿的最大面积

题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-area-of-island著作权归领扣网络所有。商业转载请联系官方授权,

2021-02-13 11:35:03 130 1

原创 Leetcode 905. 按奇偶排序数组

题目描述给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。C++class Solution {public: vector<int> sortArrayByParity(vector<int>& A) { /* 意思就是将所有偶数放在前边; 奇数放在后边; 类似于快速排序的一次划分?所以用双指针

2021-02-13 10:57:13 165

原创 Leetcode 746. 使用最小花费爬楼梯

题目描述数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。来源:力扣(LeetCode)

2021-02-13 10:24:53 96

原创 Leetcode 724. 寻找数组的中心索引

题目描述给你一个整数数组 nums,请编写一个能够返回数组 “中心索引” 的方法。数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。注意:中心索引可能出现在数组的两端。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-pivot-index著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C+

2021-02-12 18:00:13 43

原创 Leetcode 717. 1比特与2比特字符

题目描述有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++class Solution {public: bool

2021-02-12 17:39:35 219

原创 Leetcode 674. 最长连续递增序列

题目描述给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longes

2021-02-12 16:57:32 62

原创 剑指offer 23.链表中环的入口节点

题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/linked-list-c

2021-02-10 11:14:54 58

原创 Leetcode 819. 最常见的单词

参考文献getline函数详解stringstream学习C++进行字符串分割C++删除字符串中特定字符字符串大小写转换C++删除空格和标点符号

2021-02-10 09:42:49 200

原创 Leetcode 804. 唯一摩尔斯密码词

题目描述国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–.","–.-",".-.","…","-","…-","…-",".–","-…-","-.–","–…

2021-02-09 19:47:28 102

原创 Leetcode 670. 最大交换

题目描述给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。C++class Solution {public: int maximumSwap(int num) { /* 将数值拆开放到vector; 判断最大值是否在最高位; 若是,判断次大值是否在次位; 以此类推... */ vector<int> b; int n=num;

2021-02-07 21:05:58 189

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除