Leetcode
叶子在这儿
踮起脚尖,更接近阳光
展开
-
LeetCode56.合并
解题思路对集合按起始值升序排列创建两个对象v1(初始去排序后的集合中的第一个元素),v2(v1的后一个元素)进行比较,如果发现区间有重叠,则修改v1的末尾值,否则直接把v1加入结果数组中,在从v2开始比较public List<Interval> merge(List<Interval> intervals) { List<Interval&...转载 2018-11-01 17:52:19 · 207 阅读 · 0 评论 -
LeetCode 832. 翻转图像(Java代码)
给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,...原创 2018-08-02 19:59:58 · 573 阅读 · 0 评论 -
LeetCode 657. 判断路线成圈(Java实现)
初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置。移动顺序由一个字符串表示。每一个动作都是由一个字符来表示的。机器人有效的动作有 R(右),L(左),U(上)和 D(下)。输出应为 true 或 false,表示机器人移动路线是否成圈。示例 1:输入: "UD"输出: true示例 2:...原创 2018-08-02 20:12:45 · 180 阅读 · 0 评论 -
LeetCode 461. 汉明距离(Java实现)
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。//异或,然后找1的个数...原创 2018-08-02 20:33:16 · 1677 阅读 · 0 评论 -
LeetCode 617. 合并二叉树(Java实现)
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 ...原创 2018-08-02 20:53:40 · 1121 阅读 · 0 评论 -
LeetCode 852. 山脉数组的峰顶索引(Java实现)
我们把符合下列属性的数组 A 称作山脉:A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < ... A...原创 2018-08-02 21:49:42 · 454 阅读 · 0 评论 -
LeetCode 475. 供暖器(Java代码)
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。 给出的房屋和供暖器的位置均是非负数且不会超过10^9。 只要房屋位于供暖器的半径内(包括在...转载 2018-08-03 20:26:01 · 1040 阅读 · 0 评论 -
LeetCode 876. 链表的中间结点(Java版)
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans...原创 2018-08-04 17:48:01 · 739 阅读 · 0 评论 -
LeetCode 844. 比较含退格的字符串(Java实现)
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S...原创 2018-08-05 09:56:59 · 470 阅读 · 0 评论 -
LeetCode 840. 矩阵中的幻方(Java代码)
3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的 N × N 矩阵,其中有多少个 3 × 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的)。 示例 1:输入: [[4,3,8,4], [9,5,1,9], [2,7,6,2]]输出: 1解释: 下面的子...转载 2018-08-06 11:33:10 · 698 阅读 · 0 评论 -
LeetCode 709. 转换成小写字母(Java 代码)
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。 示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"class Solution { publ原创 2018-08-02 17:28:38 · 511 阅读 · 0 评论 -
LeetCode 771. 宝石与石头(Java代码)
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = ".原创 2018-08-02 17:01:38 · 915 阅读 · 0 评论 -
LeetCode560 和为K的
暴力解法两层循环,外层循环遍历数组中的每一个数,以每一个数当做子数组的开始位置;内层循环遍历得到是否存在和为K的子数组 public int subarraySum(int[] nums, int k) { int sum = 0; int start=0; int count = 0; for(int i = 0;i <...原创 2018-11-01 17:25:29 · 530 阅读 · 0 评论 -
LeetCode 5最长回文子串(java代码)
方法一:动态规划 定义P(i,j):如果字符串从i位置到j位置是回文,P(i,j)=true;否则,P(i,j)=false; 那么P(i,j)= P(i+1,j−1) && Si==Sj 首先初始化一字母和二字母的回文: P(i,i)=true P(i, i) = true P(i,i)=true ...转载 2018-09-09 18:14:33 · 1676 阅读 · 2 评论 -
LeetCode 547. 朋友圈数量--无向连通图
解析方法一:DFS遍历所有人,对于每一个人,寻找他的好友,找到好友后再找这个好友的好友,这样深度优先遍历下去,设置一个visited记录是否已经遍历了这个人。 因为如果m个人最多m个朋友圈,设置后visited后,相同的朋友圈会检测到visited[i]!=0就会不算数class Solution { public int findCircleNum(int[][] M) {...转载 2018-09-09 17:37:45 · 2150 阅读 · 0 评论 -
LeetCode 146. LRU缓存机制(java实现)
参考解答总结:这道题主要要知道选取何种数据结构并且在 O(1) 时间复杂度内完成这两种操作?O(1) 的get方法肯定要用到HashMap()LinkedList(双向链表)可以以O(1)时间复杂度,很方便地实现数据的插入和删除所以,将两个数据结构联合使用,HashMap中的(key,value)存储的是(key,Node);Node中储存的数据是双向链表节点信息,包括key,...转载 2018-08-22 22:58:19 · 2323 阅读 · 0 评论 -
LeetCode 849 到最近的人的最大距离(Java版)
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1:输入:[1,0,0,0,1,0,1]输出:2解释:如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。如果亚...原创 2018-07-28 14:16:56 · 701 阅读 · 0 评论 -
LeetCode 1. 两数之和(Java版)
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]//用hashmap,时间复杂度o(n),空间o(n)class Solution {...原创 2018-07-28 14:47:31 · 1234 阅读 · 0 评论 -
LeetCode 2.两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807//两个数按位相加,进位是carr...原创 2018-07-28 16:23:23 · 113 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串(Java版)
原题题解方法一穷举所有的子串(定义两个函数): ①第一个函数穷举所有可能出现的子串结果,对于字符串的每一个字符,它所构成的子串是下标比它大的所有子串组合 eg:abc 对于a,子串有a, ab,abc, 对于b,子串有b,bc, 对于c,有子串c ...转载 2018-07-29 11:38:17 · 8905 阅读 · 4 评论 -
LeetCode 120三角形最小路径和(Java版)
原题题解动态规划,看到大佬用了三种方法方法一: 定义一个一维数组res储存结果,从三角形最底端开始,所以定义的一维数组的长度是三角形的行数+1(+1是为了防止下标越界),然后两次for循环遍历,每一步都只能在下一行相邻两个中选取。如果本行是i,下一次的结果只能在i+1行的j和j+1中选取 所以公式为res[j]=Math.min(res[j],res[j+1])+...转载 2018-08-01 20:17:22 · 1220 阅读 · 0 评论 -
LeetCode 836. 矩形重叠(Java实现)
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输...原创 2018-08-06 12:03:07 · 697 阅读 · 0 评论 -
LeetCode 458. 可怜的小猪(Java实现)
有1000只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在15分钟内死去。问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?回答这个问题,并为下列的进阶问题编写一个通用算法。进阶: 假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分钟内找出“有毒”水桶?n只水桶里有且...原创 2018-08-06 14:21:36 · 705 阅读 · 0 评论 -
LeetCode 506. 相对名次(java实现)
给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。(注:分数越高的选手,排名越靠前。)示例 1:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal", "Bro.原创 2018-08-14 09:43:43 · 459 阅读 · 0 评论 -
LeetCode 345. 反转字符串中的元音字母(java 实现)
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。//双指针class Solution { private final static Set<Character> set=n转载 2018-08-14 10:53:57 · 572 阅读 · 0 评论 -
LeetCode 13. 罗马数字转整数(java 实现)
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。...原创 2018-08-14 11:18:21 · 1344 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组(java 实现)
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-08-14 13:48:39 · 3562 阅读 · 0 评论 -
LeetCode 141. 环形链表(java 实现)
给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * nex...原创 2018-08-14 14:24:50 · 1497 阅读 · 0 评论 -
LeetCode 524. 通过删除字母匹配到字典里最长单词(java 实现)
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = "abpcplea", d = ["ale","apple","monkey","plea"]输出: "apple"示例 2:输入:s = &qu原创 2018-08-14 15:07:50 · 500 阅读 · 0 评论 -
LeetCode 680. 验证回文字符串 Ⅱ(java实现)
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。class Solution { public boolean validPalindrome(S...原创 2018-08-14 15:49:46 · 481 阅读 · 0 评论 -
LeetCode 20. 有效的括号(java 实现)
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示...原创 2018-08-14 17:24:38 · 1077 阅读 · 0 评论 -
LeetCode 215. 数组中的第K个最大元素(java 实现)
在未排序的数组中找到第 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 ≤ 数组的长度。排序 :时间复杂度...原创 2018-08-14 20:24:26 · 4196 阅读 · 4 评论 -
LeetCode 9. 回文数(java实现)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...转载 2018-08-14 00:03:02 · 576 阅读 · 0 评论 -
LeetCode 575. 分糖果(java实现)
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数...原创 2018-08-13 21:18:57 · 743 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST(Java实现)
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True 案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 2...原创 2018-08-06 20:01:06 · 199 阅读 · 0 评论 -
LeetCode 645. 错误的集合(Java代码)
集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数...原创 2018-08-06 20:25:03 · 497 阅读 · 0 评论 -
LeetCode 643. 子数组最大平均数(Java实现)
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75 注意:1 <= k <= n <= 30,000。 所给数据范围 [-10,000,10,000]。//滑动...原创 2018-08-06 21:00:26 · 668 阅读 · 0 评论 -
LeetCode 633. 平方数之和(Java实现)
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5 示例2:输入: 3输出: Falseclass Solution { public boolean judgeSquareSum(int c) { int half_c ...转载 2018-08-07 14:01:53 · 691 阅读 · 0 评论 -
LeetCode 628. 三个数的最大乘积(Java实现)
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。解析...转载 2018-08-07 23:31:15 · 756 阅读 · 0 评论 -
LeetCode 605. 种花问题(Java实现)
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出...原创 2018-08-08 23:00:19 · 892 阅读 · 0 评论