自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

信仰.的博客

学无止境

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

原创 JAVA程序设计:直线上最多的点数(LeetCode:149)

给定一个二维平面,平面上有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解释:...

2019-08-31 10:59:49 544

原创 JAVA程序设计:对链表进行插入排序(LeetCode:147)

对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入...

2019-08-27 11:31:11 401

原创 JAVA程序设计:LRU缓存机制(LeetCode:146)

运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的...

2019-08-27 11:03:13 384

原创 JAVA程序设计:重排链表(LeetCode:143)

给定一个单链表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, 重新排列...

2019-08-26 11:00:35 635

原创 JAVA程序设计:单词拆分 II(LeetCode:140)

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

2019-08-25 21:31:19 290

原创 JAVA程序设计:单词拆分(LeetCode:139)

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

2019-08-25 20:53:29 387

原创 JAVA程序设计:复制带随机指针的链表(LeetCode:138)

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 1,它的下一...

2019-08-24 11:11:57 355

原创 JAVA程序设计:只出现一次的数字 (LeetCode:136 & 137)

136题给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4思路:我们知道所有出现偶数次的数异或起来后结果肯定是0,因此我们将所有数异或在一起,答案就是呢...

2019-08-24 09:53:38 309

原创 JAVA程序设计:分发糖果(LeetCode:135)

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

2019-08-23 11:00:35 753

原创 JAVA程序设计:克隆图(LeetCode:133)

给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。示例:输入:{"$id":"1","neighbors":[{"$id":"2","neighbors":[{"$ref":"1"},{"$id":"3","neighbors":[{"$ref":"2"},{"$id":"4","neigh...

2019-08-23 09:19:56 468

原创 JAVA程序设计:分割回文串 II(LeetCode:132)

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入:"aab"输出: 1解释: 进行一次分割就可将s 分割成 ["aa","b"] 这样两个回文子串。思路:设dp[i][j]:表示从i到j能否组成回文字符串,mins[i]表示[0,i]的最小分割次数。class Solution { public int min...

2019-08-22 10:23:08 285

原创 JAVA程序设计:最长连续序列(LeetCode:128)

给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:我们将数组存在hashset中,这样查找可以做到O(1),同时,我们只对 当前数字 - 1 不在哈希表里的数字,作为连续序列的第一个数字去找对应的最长序列,...

2019-08-21 09:14:16 647

原创 JAVA程序设计:单词接龙 II(LeetCode:126)

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

2019-08-20 12:48:45 948 1

原创 JAVA程序设计:二叉树中的最大路径和(LeetCode:124)

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

2019-08-20 10:22:25 1073

原创 JAVA程序设计:买卖股票的最佳时机 III(LeetCode:123)

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

2019-08-19 17:02:28 279

原创 JAVA程序设计:三角形最小路径和(LeetCode:120)

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。说明:如果你可以只使用 O(n)的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路...

2019-08-18 18:53:31 273

原创 JAVA程序设计:填充每个节点的下一个右侧节点指针(LeetCode:116)

给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next 指针都被设...

2019-08-17 20:22:46 295

原创 JAVA程序设计:不同的子序列(LeetCode:115)

给定一个字符串S和一个字符串T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE"是"ABCDE"的一个子序列,而"AEC"不是)示例1:输入: S = "rabbbit", T = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 S ...

2019-08-17 19:51:08 344

原创 JAVA程序设计:二叉树展开为链表(LeetCode:114)

给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6思路:方法一:class Solution { public void...

2019-08-17 18:03:42 598

原创 JAVA程序设计:路径总和 II(LeetCode:113)

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...

2019-08-16 17:54:45 468 3

原创 JAVA程序设计:从中序与后序遍历序列构造二叉树(LeetCode:106)

根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:分治法(感觉题解的图画的好用心啊,直接偷过来)附上题解链接:...

2019-08-14 20:51:46 346

原创 JAVA程序设计:从前序与中序遍历序列构造二叉树(LeetCode:105)

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:由preorder数组我们可以很容易确定树的树根,然后我们知道,树根元...

2019-08-14 20:15:40 284

原创 JAVA程序设计: 二叉树的层次遍历(LeetCode:102)

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]思路:采用队列广搜一遍就行了。class TreeNode { ...

2019-08-13 11:37:42 247

原创 JAVA程序设计: 恢复二叉搜索树(LeetCode:99)

二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例1:输入: [1,3,null,null,2] 1/3\ 2输出: [3,1,null,null,2] 3/1\ 2示例2:输入: [3,1,4,null,null,2] 3/ \1 4 /2输出: [2...

2019-08-12 09:24:09 438

原创 JAVA程序设计: 验证二叉搜索树(LeetCode:98)

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出:...

2019-08-11 15:54:53 487

原创 JAVA程序设计: 交错字符串(LeetCode:97)

给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false方法一:简单的暴力回朔class...

2019-08-11 11:59:14 446

原创 JAVA程序设计: 不同的二叉搜索树(LeetCode:96)

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

2019-08-11 10:43:23 245

原创 JAVA程序设计: 不同的二叉搜索树 II(LeetCode:95)

给定一个整数 n,生成所有由 1 ...n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 ...

2019-08-10 16:25:10 273

原创 JAVA程序设计: 二叉树的中序遍历(LeetCode:94)

给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?方法一:递归(最通俗易懂的方法)class Solution { public List<Integer> inorderTraversal(TreeNo...

2019-08-10 12:58:07 270

原创 JAVA程序设计: 复原IP地址(LeetCode:93)

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]思路:回朔即可class Solution { List<String> ans=new ArrayList<String>(); public Li...

2019-08-10 11:47:32 412

原创 JAVA程序设计: 反转链表 II(LeetCode:92)

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL方法一:直接开两个指针,递归交换即可。class Solution { private...

2019-08-09 16:46:25 241

原创 JAVA程序设计: 子集 II(LeetCode:90)

给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]思路:回朔搞一搞即可。class Solution { List<Integer> res=new Array...

2019-08-09 10:43:25 281

原创 JAVA程序设计: 格雷编码(LeetCode:89)

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 -...

2019-08-08 22:38:28 191

原创 JAVA程序设计:扰乱字符串(LeetCode:87)

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

2019-08-08 17:42:04 396

原创 JAVA程序设计: 分隔链表(LeetCode:86)

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路:双指针随便搞搞即可。class Soluti...

2019-08-07 21:27:30 273

原创 JAVA程序设计:最大矩形(LeetCode:85)

给定一个仅包含0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6思路:写了一个O(n^3)的写法,前缀和瞎搞搞class Sol...

2019-08-07 13:24:24 342

原创 JAVA程序设计: 柱状图中最大的矩形(LeetCode:84)

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10思路:方法一:暴力...

2019-08-07 12:55:56 562 4

原创 JAVA程序设计:删除排序链表中的重复元素 II(LeetCode:82)

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: 2->3思路:开三个指针随便搞搞即可。class Solution { ...

2019-08-06 10:24:10 286

原创 JAVA程序设计: 删除排序数组中的重复项 II(LeetCode:80)

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度...

2019-08-05 13:22:40 221

原创 JAVA程序设计: 单词搜索(LeetCode:79)

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED...

2019-08-05 12:59:04 336

空空如也

空空如也

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

TA关注的人

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