自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序

动图来自https://www.cnblogs.com/onepixel/articles/7674659.html代码测试于https://www.nowcoder.com/questionTerminal/508f66c6c93d4191ab25151066cb50ef一、插入排序思路将数据分为有序部分和无序部分。对于未排序数据,在已排序序列中从后向前扫描,找到相应...

2018-12-12 16:32:13 305 2

原创 一些注意事项

0.解题思路a. 普通思路b. 递归(BFS/DFS)c. 动态规划(比递归快)d. 双指针(比for循环快)(如:快慢指针方法)e. 用栈1.数组初始化int[] a=new int[5];a[0]默认为0.二维数组也一样。boolean[] b=new boolean[5];b[0]默认为false.String[] c=new String[...

2018-07-04 16:54:22 355

原创 D-LeetCode164-最大间距

题目给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数...

2019-04-22 14:48:04 218

原创 Map/字符串切割-LeetCode140-单词拆分 II

题目给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = "catsanddog"wordDict = ["cat", "cats", "and", "sand", "do...

2019-04-19 12:39:53 365

原创 D-动态规划-LeetCode139-单词拆分

题目给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode...

2019-04-19 10:00:34 200

原创 D-位运算-LeetCode137-只出现一次的数字 II

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99思路int整数可以看成32位bit,a、b、nums[i]都这么看。...

2019-04-16 11:17:53 177

原创 D-LeetCode135-分发糖果

题目老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。...

2019-04-13 10:15:02 163

原创 栈-LeetCode173-二叉搜索树迭代器

题目解答https://blog.youkuaiyun.com/LaputaFallen/article/details/80025373

2019-02-23 20:01:11 182

原创 迭代算法-LeetCode144-二叉树的前序遍历

题目给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路1递归。代码1/** * Definition for a binary tree node. * public class Tree...

2019-02-21 20:46:29 157

原创 递归-LeetCode124-二叉树中的最大路径和

题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 ...

2019-02-15 14:57:57 266

原创 动态规划-LeetCode96-不同的二叉搜索树

题目给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 ...

2019-01-20 16:33:19 278

原创 链表-LeetCode143-重排链表

题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5...

2018-12-07 11:36:07 231

原创 链表与快慢指针-LeetCode142-环形链表 II/入环的第一个节点

题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。说明:不允许修改给定的链表。进阶:你是否可以不用额外空间解决此题?思路快慢指针。链表头是X,入环的第一个节点是Y,Z处快慢指针相遇。慢指针所走距离 vt=a+b快指针所走距离 2vt=a+b+c+b可得 a=c因此当快慢指针相遇后,快指针从Z点每次走一步,慢指针从X点开始每次走...

2018-12-06 10:50:34 269

原创 链表与快慢指针-LeetCode141-环形链表/是否有环

题目给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?思路需要注意的是,可能首尾成环,也可能在中间成环。使用快慢指针方法,慢指针步长为1,快指针步长为2。如果有环,则快慢指针总会在某点相遇。如果没有环,快指针会先为空。代码/** * Definition for singly-linked list. * class ListNode { *...

2018-12-05 09:21:40 169

原创 链表与快慢指针-查找中间节点

题目查找链表的中间节点。思路一般思路:一次遍历获得链表的长度,第二次遍历到中间节点。如果遍历一次就要获得中间节点可以使用快慢指针方法。快慢指针:慢指针每次移动一个节点,快指针每次移动两个节点。当快指针遍历到链表结尾时,慢指针刚好指向中间节点。快慢指针快慢指针的快慢主要是指在遍历链表过程中指针移动的快慢。比如遍历单链表,我们可以让慢指针每次移动一个节点,让快指针移动两个或两个...

2018-12-04 10:30:22 1013

原创 链表与递归/链表翻转-LeetCode25-k个一组翻转链表

题目给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->...

2018-11-28 20:16:33 237

原创 链表与递归-LeetCode24-两两交换链表中的节点

题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路递归。具体看代码。代码/** * Definition for singly-...

2018-11-28 16:12:23 270

原创 List存放链表结点-LeetCode19-删除链表的倒数第N个节点

题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1遍历一趟链表,将每个链表结点都存放到list中。...

2018-11-15 10:33:43 122

原创 链表的连接性-LeetCode138-复制带随机指针的链表

题目给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。 思路1先根据next指针复制原来链表的各个结点以及next关系。最后再复制random关系:将原链表各结点放入list1中,将新链表各结点放入list2中,遍历原链表各结点的random指针,如果不为空找到random指向的结点在list1中的位置,对应...

2018-11-14 15:17:02 123

原创 位运算-LeetCode136-只出现一次的数字

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路限制线性时间复杂度且不使用额外空间。采用位运算异或^。交换律 a^b=b^a结合...

2018-11-14 09:58:42 239

原创 观察-LeetCode172-阶乘后的零

题目给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。思路要想产生0必须2*5。2的个数足够,只需求出式子中有几个5即可。127!=...x5...x10......

2018-11-12 15:49:36 118

原创 模拟-LeetCode166-分数到小数

题目给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: "0.5"示例 2:输入: numerator = 2, denominator = 1输出: "2"示例 3:输入...

2018-11-09 15:50:35 352

原创 精度-LeetCode149-直线上最多的点数

题目给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o +------------->0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4...

2018-11-09 10:34:58 563

原创 二分法快-LeetCode50-Pow(x, n)

题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0...

2018-11-06 09:45:18 169

原创 D-位运算-剑指Offer(Java版)47-不用加减乘除做加法

题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。位操作与(&)或(|)非(~)异或(^)左移(<<) :num << 1,相当于num乘以2右移(>>) :num >> 1,相当于num除以2思路代码public class Solution { p...

2018-11-05 14:37:06 108

原创 翻倍快-LeetCode29-两数相除

题目给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数...

2018-11-03 12:42:05 168

原创 动态规划比递归快-LeetCode91-解码方法

题目一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ&quo

2018-10-28 14:22:22 389

原创 D-递归-LeetCode87-扰乱字符串

题目给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。下图是字符串 s1 = "great" 的一种可能的表示形式。 great / \ gr eat / \ / \g r e at / \ a t在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点...

2018-10-26 17:26:44 248

原创 双指针比for循环快-LeetCode76-最小覆盖子串

题目给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。思路1遍历S作为结果的首字母,确定首字母后从首字母开始往后直到找到完整包含T的...

2018-10-26 09:55:37 393

原创 动态规划-LeetCode72-编辑距离

题目给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse -> r...

2018-10-23 11:40:09 141

原创 D-动态规划比递归快-LeetCode44-通配符匹配

题目给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p =...

2018-10-18 16:32:16 350

原创 大数相乘-LeetCode43-字符串相乘

题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。num1

2018-10-17 20:07:25 215

原创 栈-LeetCode32-最长有效括号

题目给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"思路明显地,使用栈。将成对的括号转化为数字。遍历输入的字符串,分为以下情况:1. 如果是 '(' :  push入栈...

2018-10-16 19:49:51 184

原创 D-递归-LeetCode10-正则表达式匹配

题目给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"...

2018-10-12 15:02:47 477

原创 D-BFS-DFS-LeetCode126-单词接龙 II

题目给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设...

2018-09-17 17:44:45 309

原创 LeetCode73-缺失的第一个正数

题目给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。思路遍历数组将数放到它对应的位置上。再次遍历数组找到第一个不对应的位置即可。...

2018-09-10 14:06:01 228

原创 空间代价替代时间代价Map的使用-LeetCode15-三数之和

题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路三重...

2018-09-04 20:05:38 715

原创 原地算法-LeetCode73-矩阵置零

题目给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输...

2018-07-23 11:01:41 837

原创 D-空间代价替代时间代价Map的使用-LeetCode128-最长连续序列

题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路要求复杂度为 O(n),所以采用Map,以空间代价代替时间代价。Map负责存储<nums[i],目前该值所在的最长连续序列长度>。遍历数组,如果是重复的...

2018-07-15 10:42:18 197

原创 D-LeetCode152-乘积最大子序列

题目给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路1遍历,超时。思路2动态规划。代码class Solution { public...

2018-07-12 21:14:06 1587

空空如也

空空如也

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

TA关注的人

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