自定义博客皮肤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 200

原创 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 234

原创 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 279

原创 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 191

原创 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 165

原创 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 123

原创 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 251

原创 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 150

原创 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 154

原创 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 143

原创 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 241

原创 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 175

原创 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 144

原创 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 131

原创 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 148

原创 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 138

原创 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 126

原创 LeetCode#20.有效的括号

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

2020-07-10 12:13:00 128

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

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

2020-07-09 11:12:02 155

原创 LeetCode#2.两数相加

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

2020-07-08 12:17:08 159

原创 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 118

原创 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 772

原创 LeetCode#9.回文数

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

2020-07-06 20:19:45 96

空空如也

空空如也

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

TA关注的人

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