leetcode解题记录
记录leetcode解题过程
XTAOTWO
这个作者很懒,什么都没留下…
展开
-
(java)leetcode3 无重复字符的最长子串
题目描述: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为...原创 2019-05-04 19:49:23 · 238 阅读 · 0 评论 -
(java)leetcode2 两数相加
题目描述: 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -&...原创 2019-05-04 16:25:20 · 308 阅读 · 0 评论 -
(java)leetcode122 买卖股票的最佳时机2 数组的多个谷底与峰值的求和
题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候...原创 2018-11-13 22:29:26 · 408 阅读 · 0 评论 -
(java)leetcode868 二进制距离(Binary Gap)
题目描述: 给定一个正整数N,将N表示为二进制数,并找到在二进制表示的N中两个连续1之间的最长距离,如果没有两个连续的1,则返回0。 示例1: Input: 22 Output: 2 Explanation: 22表示为二进制为 0b10110 两个连续的1之间的最大距离值为2 解题思路: 首先要做的是将正整数N转换为2进制数,然后去计算每两个相邻的1之间的距离,找出其中最大的距离...原创 2018-11-13 22:05:59 · 493 阅读 · 0 评论 -
(java)leetcode121 买卖股票的最佳时机1(Best Time to Buy and Sell Stock)针对数组的峰值和谷底的操作
题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = ...原创 2018-11-12 22:21:26 · 325 阅读 · 0 评论 -
(java)leetcode682 棒球比赛(baseball game)对一个字符串数组根据不同字符类型进行相应的处理
题目描述: 你现在是棒球比赛记录员。 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数。 2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。 3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。 4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效...原创 2018-11-12 21:58:35 · 660 阅读 · 0 评论 -
(java)leetcode771 宝石与石头(Jewels and Stones)
题目描述: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例1 : Input: J = "aA", S = "aAAbbbb" Output: 3 示例2: Input:...原创 2018-10-28 16:26:35 · 412 阅读 · 0 评论 -
(java)leetcode804 唯一摩尔斯密码词(Unique Morse Code Words)
题目描述: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-...","-.-.","-.."原创 2018-10-28 16:48:36 · 287 阅读 · 0 评论 -
(java)leetcode905 将数组按奇偶性排序(Sort Array By Parity)
题目描述: 给定一个非负整数数组A,返回一个偶数在前,奇数在后的数组。 示例: Input: [3,1,2,4] Output: [2,4,3,1] 以下三个输出 [4,2,3,1], [2,4,1,3], [4,2,1,3] 也是正确结果 解题思路: 新建一个数组newA,然后去遍历给定数组,判断每一个数的奇偶性,如果时偶数,则从前开始添加进新数组,若是奇数,则从后开始添加进新数组,...原创 2018-10-28 17:06:45 · 360 阅读 · 0 评论 -
(java)leetcode461 汉明距离( Hamming Distance)
题目描述: 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。(汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。------百度百科解释) 给出两个整数 x 和 y,计算它们之间的汉明距离。 示例...原创 2018-10-28 18:00:35 · 608 阅读 · 0 评论 -
(java)leetcode832 翻转图像(Flipping an Image)
题目描述: 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。 反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。 示例1: 输入: [[1,1,0],[1,0,1]...原创 2018-10-29 19:17:44 · 388 阅读 · 0 评论 -
(java)leetcode617 合并二叉树(Merge Two Binary Trees)
题目描述: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 输入: Tree 1 Tree 2 ...原创 2018-10-29 19:30:22 · 447 阅读 · 2 评论 -
(java)leetcode561 数组拆分1(Array Partition 1)
题目描述: 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。 示例: 输入: [1,4,3,2] 输出: 4 解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4). 提示: n 是正整数,范围在 [1, 1...原创 2018-10-29 19:45:44 · 338 阅读 · 0 评论 -
(java)leetcode728 自除数(Self Diving Number)
题目描述: 自除数 是指可以被它包含的每一位数除尽的数。 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 还有,自除数不允许包含 0 。 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。 示例: 输入: 上边界left = 1, 下边界right = 22 输出: [1, 2, 3, ...原创 2018-10-29 20:01:45 · 599 阅读 · 0 评论 -
(java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)
题目描述: 我们把符合下列属性的数组 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] <...原创 2018-10-29 20:18:36 · 490 阅读 · 0 评论 -
(java)leetcode922 将数组按奇偶性分类(保证数组值的奇偶性和下标的奇偶性一致)(Sort Array By Paity Ⅱ)
题目描述: 给定非负整数数组A,A中一半是偶数,一半是奇数。 对数组进行排序, 若 A[i] 是偶数,则 i 是偶数;若 A[i] 是奇数,则 i 是奇数。 你可以返回任意一种结果。 示例: Input: [4,2,5,7] Output: [4,5,2,7] Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] 都是正确输出. 解题思路: 本...原创 2018-10-29 20:43:42 · 706 阅读 · 0 评论 -
(java)leetcode717 1比特与2比特字符 即根据不同的长度对字符进行解码(1-bit and 2-bit Characters)
题目描述: 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 示例1: 输入: bits = [1, 0, 0] 输出: True 解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。 示例2: 输...原创 2018-10-30 21:42:09 · 548 阅读 · 0 评论 -
(java)leetcode67 二进制数求和 (Add Binary)
题目描述: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例1: 输入: a = "11", b = "1" 输出: "100" 示例2: 输入: a = "1010", b = "1011" 输出: "10101" 解题思路: 最直接的解法,从最低位开始读取二进制数的每一位,转成int型,做加法,加法规则为逢2进1原创 2018-10-30 21:51:50 · 655 阅读 · 0 评论 -
(java)leetcode415 字符串相加(两个整数保存成字符串的形式,对它们求和)(Add String)
题目描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包含任何前导零。 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。 解题思路: 题目明确要求不能将字符串转成int,不然这题毫无意义。解...原创 2018-10-30 21:59:36 · 1364 阅读 · 1 评论 -
(java)leetcode258 各位相加(给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。)(Add Digit)
题目描述: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 解题思路: 直接循环取出每一位上的数字,求和后,判断是否满足结束条件,若不满足,则继续对求和后的数字计算,知道满足条件为止。 代码实现(java): cl...原创 2018-10-30 22:18:31 · 2722 阅读 · 0 评论 -
(java)leetcode445 分发饼干(Assign Cookies)
题目描述: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 示例1: 输入: ...原创 2018-10-31 22:33:37 · 429 阅读 · 0 评论