
LeetCode Java练习
be_gin_ner
这个作者很懒,什么都没留下…
展开
-
全排列(给定一个没有重复数字的序列,返回其所有可能的全排列。)
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]递归的时候需要注意不能添加重复的元素,需要添加判断。还有就是list集合为引用数据类型,需要创建临时集合接收。代码挺好理解的,有啥问题欢迎提出。import java.util...原创 2019-07-29 23:43:31 · 5249 阅读 · 0 评论 -
计数质数(统计所有小于非负整数 n 的质数的数量。)
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解题思路:用一个长度为N+1的数组保存信息(0表示素数,1表示非素数),先假设所有的数都是素数(初始化为0),从第一个素数2开始,把2的倍数都标记为非素数(置为1),一直到大于N;然后进行下一趟,找到2后面的下一个素数3,进行同样的处...原创 2019-05-04 23:27:39 · 2225 阅读 · 0 评论 -
丑数II(编写一个程序,找出第 n 个丑数。)
编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。public class test0418 { public static void main(String[] args) { Solut...原创 2019-04-18 20:14:21 · 549 阅读 · 0 评论 -
缺失的第一个正数(给定一个未排序的整数数组,找出其中没有出现的最小的正整数。)
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1解题思路:先将的数组排序,然后把大于等于1的并且小于数组长度的数依次从第零位开始排序。(例如:[ 3, 4, -1, 1 ]。先排序变成[-1,...原创 2019-04-14 21:34:20 · 2613 阅读 · 0 评论 -
用栈实现队列 和 用队列实现栈
用栈实现队列使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // ...原创 2019-04-21 22:57:40 · 201 阅读 · 0 评论 -
最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。解题思路:遍历数组...原创 2019-04-20 22:01:33 · 419 阅读 · 0 评论 -
Z字形变换 详解
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:s...原创 2019-04-15 19:19:04 · 4037 阅读 · 1 评论 -
柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:...原创 2019-04-08 23:55:12 · 142 阅读 · 0 评论 -
写字符串需要的行数
我们要把给定的字符串S从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组widths,这个数组widths[0] 代表 'a' 需要的单位,widths[1] 代表 'b' 需要的单位,...,widths[25] 代表 'z' 需要的单位。现在回答两个问题:至少多少行...原创 2019-04-06 23:34:48 · 121 阅读 · 0 评论 -
比特位计数(给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。)
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]思想方法:i & (i-1) 是把i最右边的1去掉,即 i中1的个数为 i&(i-1)中1 的个数加1,a[i]对应着i中含有1的个数...原创 2019-03-27 19:30:42 · 2074 阅读 · 0 评论 -
将数组分成和相等的三个部分
给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1]) 就可以将数组三等分...原创 2019-03-24 16:10:34 · 2918 阅读 · 1 评论 -
按递增顺序显示卡牌
牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。现在,重复执行以下步骤,直到显示所有卡牌为止:从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。返回能以递增顺序显示卡牌的牌组顺序。答案中...原创 2019-03-31 14:50:06 · 340 阅读 · 0 评论 -
山脉数组的峰顶索引(给定一个为山脉的数组 返回任何满足 的 i 值。)
我们把符合下列属性的数组 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[i-...原创 2019-03-23 22:56:46 · 247 阅读 · 0 评论 -
两个数组的交集(给定两个数组,编写一个函数来计算它们的交集。)
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]解题思路:先将两个给定的数组排序(用Arrays.sort()),然后用一个数组中的数去另一个数组中找相同的数,找到后存入要返回的...原创 2019-03-22 23:31:14 · 7227 阅读 · 10 评论 -
按奇偶排序数组(定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。)
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。public class test0326 { public static void main(Str...原创 2019-03-26 10:19:31 · 657 阅读 · 0 评论 -
按奇偶排序数组II(给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。)
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length ...原创 2019-03-26 07:26:26 · 2013 阅读 · 0 评论 -
将大写字母转换为小写字母(将该字符串中的大写字母转换成小写字母,之后返回新的字符串。)
将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"通过ASCII码标的所在位置来判断是否为大写字母,并将其通过加32对应到其小写字母的位置。public class test0325 { pub...原创 2019-03-25 22:25:20 · 6861 阅读 · 0 评论 -
十进制整数的反码(给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。)
每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。 注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。示例 1:输入:...原创 2019-03-18 20:54:54 · 965 阅读 · 0 评论 -
逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例 2:...原创 2019-04-29 19:28:05 · 327 阅读 · 0 评论 -
字符串相乘(给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,)
给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"解题思路:定义一个整形数组,长度为两个字符串长度之和。从后往前遍历两个字符串,并将元...原创 2019-05-08 18:59:33 · 2917 阅读 · 1 评论 -
比较版本号--LeetCode
比较两个版本号 version1和 version2。如果version1>version2返回1,如果version1<version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和. 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假...原创 2019-06-30 19:18:08 · 382 阅读 · 1 评论 -
翻转字符串里的单词(给定一个字符串,逐个翻转字符串中的每个单词。)--LeetCode
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输出:"ex...原创 2019-07-02 23:15:58 · 3009 阅读 · 0 评论 -
Leetcode--无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wk...原创 2019-06-03 23:07:37 · 97 阅读 · 0 评论 -
下降路径最小和(给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。)
给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素在下一行选择的元素和当前行所选元素最多相隔一列。示例:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:12解释:可能的下降路径有:[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9][2,4,7],...原创 2019-05-28 23:10:15 · 547 阅读 · 0 评论 -
杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]解题思路:每一行的第一个和最后一个都为1,中间位置的第i位数字为上一行第i-1位和上一位的第i为数字之和。p...原创 2019-05-30 23:52:54 · 222 阅读 · 0 评论 -
三数之和
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解题思路:采用定一移二...原创 2019-05-18 11:02:37 · 110 阅读 · 0 评论 -
解码方法(一条包含字母 A-Z 的消息通过以下方式进行了编码)
一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26), "V...原创 2019-05-11 19:09:50 · 6435 阅读 · 0 评论 -
括号生成(给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。)
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]public class Test0524 { public static void main(String[] a...原创 2019-05-24 22:44:41 · 4280 阅读 · 0 评论 -
不同路径II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?解题思路:这个题主要问题就是有个障碍物,我们可以在遇到障碍物的时候,让其路径的值为0,这样计算下次的路径时,就不会产生影响。如下图...原创 2019-05-15 18:49:36 · 213 阅读 · 0 评论 -
不同路径(一个机器人位于一个 m x n 网格的左上角)
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2....原创 2019-05-15 18:28:07 · 9928 阅读 · 1 评论 -
打家劫舍II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例1:输入: [2,3,2]输出: 3解释: 你不...原创 2019-05-10 21:18:47 · 163 阅读 · 0 评论 -
两个数组的交集II(给定两个数组,编写一个函数来计算它们的交集。)
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]解题思路:将第一个数组的元素存到集合中,往第二个集合中存入时,需要判断集合1是否包含当下的元素,如果包含那么当下元素,那么...原创 2019-05-07 23:48:43 · 3644 阅读 · 0 评论 -
打家劫舍I
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...原创 2019-05-09 23:13:13 · 234 阅读 · 2 评论 -
最小路径和(给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。)
给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:dp[i][j]代表从(0,0)走到(i,j)的最小路径和则dp[0][i]来自第一行...原创 2019-05-19 23:42:02 · 5682 阅读 · 1 评论 -
最短无序连续子数组(在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。)
在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。注意:n 是正数且在32为整形范围内 ( n < 231)。示例 1:输入:3输出:3示例 2:输入:11输出:0说明:第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。...原创 2019-05-06 23:03:41 · 2364 阅读 · 0 评论 -
买卖股票的最佳时机含手续费
给定一个整数数组prices,其中第i个元素代表了第i天的股票价格 ;非负整数fee代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解释: 能够达到的最大...原创 2019-05-13 22:51:12 · 379 阅读 · 0 评论 -
二进制间距(给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。)
给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。如果没有两个连续的 1,返回 0 。示例 1:输入:22输出:2解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对连续的 1 。第一对连续的 1 中,两个 1 之间的距离为 2 。第二对连续的 1 中,两个 1 之间的距离为 1 。答案取两个距离之中最大的,...原创 2019-04-30 23:09:44 · 1568 阅读 · 0 评论 -
两数之和II
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], targ...原创 2019-03-21 17:29:05 · 171 阅读 · 0 评论 -
赎金信(给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串, 判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成)
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct("a", "b") -...原创 2019-03-12 19:00:45 · 598 阅读 · 0 评论 -
错误的集合(给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。)
集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]我的做法是先将数组排序...原创 2019-03-17 17:41:37 · 361 阅读 · 2 评论