自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sinat_41679123的博客

算法菜鸡,努力学习

  • 博客(59)
  • 收藏
  • 关注

原创 leetcode-135. 分发糖果

leetcode-135

2020-07-31 13:16:26 158

原创 leetcode-20. 有效的括号

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

2020-07-30 22:18:56 101

原创 leetcode-19. 删除链表的倒数第N个节点

leetcode - 19

2020-07-30 22:12:44 135 1

原创 leetcode-10. 正则表达式匹配

题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:s

2020-07-30 18:08:41 165

原创 leetcode-6. Z 字形变换

leetcode-6

2020-07-30 11:52:51 121

原创 leetcode-440. 字典序的第K小数字

题目给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。解题思路看了题解做出来的。。感觉没有想得很明白。按照字典序排序,以数字i开头的数字,一定在排在以数字i + 1开头的数字之前,即:11xxx一定排在12x之前。画成1个十叉树,差不多是这样

2020-07-30 10:52:47 401

原创 leetcode-343. 整数拆分

题目给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。解题思路对于n,有:f(n)=max{1∗f(n−1),1∗(n−1),2∗f(n−2),2∗(n−2),…n//2∗f(n−n//2),

2020-07-30 09:23:59 114

原创 leetcode-104. 二叉树的最大深度

leetcode - 104

2020-07-28 11:50:15 152

原创 leetcode-392. 判断子序列

题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ahbgdc”返回 true.示例 2:s = “axc”, t = “ahb

2020-07-27 19:35:24 137

原创 leetcode-329. 矩阵中的最长递增路径

题目给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最长递增路径是 [3, 4, 5, 6]

2020-07-26 10:06:09 164

原创 leetcode-647. 回文子串

leetcode - 647

2020-07-25 16:37:27 193 1

原创 leetcode-214. 最短回文串

题目给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd"解题思路因为只能从最前面添加字符,而且要保证添加了字符后组成1个回文串,所以枚举所有可能。对给出的s,从最后向前找回文串,如果找到s[:i]是一个回文串的话,那么只需要添加s[i + 1:]的逆序,把这部分变成回文串即可。每次判断回文串的复杂度是o(

2020-07-25 16:22:52 385

原创 leetcode-813. 最大平均值和的分组

题目我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入: A = [9,1,2,3,9]K = 3输出: 20解释: A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20.我们也可以把 A 分成[9, 1], [2], [3, 9].这样的分组得到

2020-07-25 14:38:27 168

原创 leetcode-410. 分割数组的最大值

题目给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。解

2020-07-25 13:51:26 182

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

题目给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相

2020-07-24 14:19:20 212 1

原创 leetcode-154. 寻找旋转排序数组中的最小值 II

题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0解题思路和寻找旋转排序数组中的最小值比较类似,但是增加了重复的数字,导致在考虑条件的时候,需要对nums[mid] == nums[right]做额外处理。当相等时,因为无法确定mid是否

2020-07-22 11:08:03 112

原创 leetcode-153. 寻找旋转排序数组中的最小值

leetcode - 153

2020-07-22 10:51:58 109

原创 leetcode-92. 反转链表 II

题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路反转链表的部分,和反转链表相同,然后对于位置计数即可。代码# Definition for singly-linked list.# class ListNode:# def __i

2020-07-21 10:24:47 115

原创 leetcode-203. 移除链表元素

题目删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题思路没啥好说的……注意用额外一个header作为返回的head指针即可代码# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val

2020-07-21 08:55:39 106

原创 leetcode-206. 反转链表

leetcode-206

2020-07-21 08:51:57 140 1

原创 leetcode-22. 括号生成

leetcode - 22

2020-07-20 12:06:14 128 1

原创 leetcode-17. 电话号码的字母组合

题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。解题思路每次过1个数字时,把该数字对应的字母,分别加到之前的结果上代码class Solution: def letterComb

2020-07-20 11:05:27 337

原创 leetcode-52. N皇后 II

leetcode - 52

2020-07-20 10:47:21 125

原创 leetcode-51. N皇后

leetcode - 51

2020-07-20 10:30:11 146

原创 leetcode-494. 目标和

题目给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例:输入:nums: [1, 1, 1, 1, 1], S: 3输出:5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3一共有5种方法让最终目标和为

2020-07-19 23:16:44 129

原创 leetcode-227. 基本计算器 II

leetcode - 227

2020-07-19 22:31:23 312 1

原创 leetcode-224. 基本计算器

leetcode-224

2020-07-19 20:11:31 160 1

原创 leetcode-25. K 个一组翻转链表

leetcode-25

2020-07-19 17:39:06 261 1

原创 leetcode-312. 戳气球

题目有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实存

2020-07-19 15:34:50 136

原创 leetcode-97. 交错字符串

leetcode-97

2020-07-18 09:39:58 129

原创 leetcode-658. 找到 K 个最接近的元素

题目给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例 1:输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2:输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3,4]说明:k 的值为正数,且总是小于给定排序数组的长度。数组不为空,且长度不超过 104数组里的每个元素与 x 的绝对值不超过

2020-07-17 10:49:18 158

原创 leetcode-374. 猜数字大小

题目我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小 1 : 我的数字比较大 0 : 恭喜!你猜对了!示例 :输入: n = 10, pick = 6输出: 6解题思路标准的二分查找代码# The guess API is already defi

2020-07-17 10:27:10 136

原创 leetcode-34. 在排序数组中查找元素的第一个和最后一个位置

leetcode - 34

2020-07-17 10:22:50 119

原创 leetcode-278. 第一个错误的版本

题目你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例:给定 n = 5,并且 v

2020-07-17 09:38:58 126

原创 leetcode-35. 搜索插入位置

leetcode - 35

2020-07-17 09:32:42 100

原创 leetcode-785. 判断二分图

leetcode - 785

2020-07-16 18:17:07 153 1

原创 leetcode-95. 不同的二叉搜索树 II

leetcode - 95

2020-07-15 15:33:07 113

原创 leetcode-96. 不同的二叉搜索树

leetcode-96

2020-07-15 14:06:25 148

原创 leetcode-120. 三角形最小路径和

题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。解题思路从底向上走,每个位置对应的最小路径,应该是value + min(triangle[row + 1][col],

2020-07-14 07:42:17 145

原创 leetcode-167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组题目给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于

2020-07-13 09:11:32 173

空空如也

空空如也

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

TA关注的人

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