自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode#88.合并两个有序数组

88.合并两个有序数组一、题目描述二、题解一、题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。二、题解...

2020-08-19 12:20:05 159

原创 LeetCode#142.环形链表Ⅱ

142.环形链表Ⅱ一、题目描述二、题解一、题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。说明: 不允许修改给定的链表。示例1:输入: head = [3,2,0,-4], pos = 1输出: tail connects to node index 1解释: 链表中有一个环,其尾部连接到第二个节点。示例2:输入:

2020-08-10 13:00:18 181

原创 LeetCode#61.旋转链表

61.旋转链表一、题目描述二、解题思路三、解法一:非成环法四、解法二:成环法一、题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2

2020-08-06 12:13:29 184

原创 LeetCode#215.数组中的第K个最大元素

215.数组中的第K个最大元素一、题目描述二、解法一:暴力三、解法二:一、题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。二、解法一:暴力思路:先将数组排序,之后直接输出第K大的元

2020-08-05 20:35:47 150

原创 LeetCode#78.子集

78.子集一、题目描述二、题解一、题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明: 解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[&emps;[3],&emps;[1],&emps;[2],&emps;[1,2,3],&emps;[1,3],&emps;[2,3],&emps;[1,2],&emps;[ ]]二、题解思路:使用回溯算法

2020-07-29 11:21:56 132

原创 LeetCode#62.不同路径

62.不同路径一、题目描述二、解法一:DFS三、解法二:动态规划一、题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?二、解法一:DFS注意: 该方法会TLE。class Solution {public: bool flag[105][105];//标记数组

2020-07-28 19:47:30 97

原创 LeetCode#54.螺旋矩阵

54.螺旋矩阵一、题目描述二、题解一、题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]二、题解思

2020-07-26 12:12:23 184

原创 LeetCode#46.全排列

46.全排列一、题目描述二、题解一、题目描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]二、题解思路:本题可以使用回溯算法来模拟整个过程,实现时使用深度优先搜索+交换。具体来说,就是执行一次深度优先遍历,从树的根节点到叶子节点形成的路径就是一个全排列,如:[1,2,3],[1,3,2]代码:class Solutio

2020-07-25 18:32:04 124

原创 LeetCode#415.字符串相加

415.字符串相加一、题目描述二、题解一、题目描述给定两个字符串形式的非负整数num1和num2,计算它们的和。注意:num1和num2的长度都小于5100。num1和num2都只包含数字0-9。num1和num2都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。二、题解思路:本题实质是要实现竖式加法,与 2.两数相加 相似。代码:class Solution {public: string addStrings

2020-07-24 19:26:30 114

原创 LeetCode#33.搜索旋转排序数组

33.搜索旋转排序数组一、题目描述二、题解一、题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2:输入: num

2020-07-23 16:36:24 112

原创 LeetCode#15.三数之和

15.三数之和一、题目描述二、题解一、题目描述给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意: 答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]二、题解思路:本题最容易想到的方法是暴力搜索,即通过三层循环将所有可能的情况都列举出

2020-07-22 22:43:02 201

原创 LeetCode#11.盛最多水的容器

11.盛最多水的容器一、题目描述二、题解一、题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明: 你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入: [1,8,

2020-07-19 11:03:08 145

原创 LeetCode#5.最长回文子串

5.最长回文子串一、题目描述二、解法一:动态规划三、解法二:中心扩散一、题目描述给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案示例2:输入: “cbbd”输出: “bb”二、解法一:动态规划思路:对于一个字符串而言,如果它是回文串,并且长度大于2,那么将它首尾的两个字母去除之后,它仍然是个回文串。使用dp[i][j]来表示子串s[i…j]是否为回文串,得到状态转移

2020-07-18 20:08:32 107

原创 LeetCode#70.爬楼梯

70.爬楼梯一、题目描述二、题解一、题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意: 给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1.     1 阶 + 1 阶2.    2 阶示例2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. &nbs

2020-07-15 09:56:49 100

原创 LeetCode#53.最大子序和

53.最大子序和一、题目描述二、解法一:暴力三、解法二:动态规划一、题目描述给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的分治法求解。二、解法一:暴力思路:将所有连续子数组的和都求出来,取最大值。代码:class Solution {p

2020-07-13 10:03:07 122

原创 LeetCode#26.删除排序数组中的重复项

26.删除排序数组中的重复项一、题目描述二、解法一:原地删除三、解法二:双指针一、题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1

2020-07-12 09:43:33 102

原创 LeetCode#21.合并两个有序链表

12.合并两个有序链表一、题目描述二、题解一、题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入: 1->2->4, 1->3->4输出: 1->1->2->3->4->4二、题解思路:使用迭代的方法。每次将较小值的节点添加到结果中去。代码:class Solution {public: ListNode* mergeTwoLists(ListNode* l1,

2020-07-11 09:56:32 102

原创 LeetCode#20.有效的括号

20.有效的括号一、题目描述二、题解一、题目描述给定一个只包括’(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须使用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: “( )”输出: true示例2:输入: “( )[ ]{ }”输出: true示例3:输入: “( ]”输出: false示例4:输入: “( [ ) ]”输出: false示例5:

2020-07-10 12:13:00 105

原创 LeetCode#14.最长公共前缀

14.最长公共前缀题目描述题解注意题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""示例1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例2:输入: [“dog”,“rececar”,“car”]输出: “”解释: 输入不存在公共前缀说明:所有输入只包含小写字母a-z题解思路:采用纵向扫描的方法。从每个字符串的第一个字符开始,判断当前字符是否相等,如果相等则取下一个字符进行比较。代码:clas

2020-07-09 11:12:02 122

原创 LeetCode#2.两数相加

2.两数相加题目描述题解题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -> 0 -> 8原因: 342 + 465 = 807题解思路:本题实质上是一个竖式

2020-07-08 12:17:08 121

原创 LeetCode#1.两数之和

1.两数之和题目描述解法一:暴力解法二:哈希表题目描述给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法一:暴力class Solution {public: vector

2020-07-07 19:15:50 94

原创 LeetCode#7.整数反转

7.整数反转题目描述题解题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入:123输出:321示例2:输入:-123输出:-321示例3:输入:120输出:21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题解思路:使用数学法溢出前进行检查代码:class Solution {public: i

2020-07-06 21:00:25 729

原创 LeetCode#9.回文数

9.回文数题目描述解法一:转为字符串解法二:数学法题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入:121输出:true示例2:输入:-121输出:false解释:从左向右读,为 -121 。从右向左读,为 121- 。因此它不是一个回文数。示例3:输入:10输出:false解释:从右向左读,为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?解法一:转为字符串class S

2020-07-06 20:19:45 80

空空如也

空空如也

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

TA关注的人

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