java
文章平均质量分 77
天才是从醒悟开始的
目标+努力+坚持
展开
-
最长重复子串 「java 实现」
给定一个字符串,寻找其最长重复子串,例如「abbaba」最长重复子串为 ab。思路:由于最长重复子串的长度,不超过原字符串的长度的一半,所以从字符串的一半开始计算,将源字符串分为两部分,左边一部分为样品 sample,右边一部分为寻找子串left,如果左边寻找子串包含了 left ,那么将返回这个最长重复子串。public static String longestRepeatingSu...转载 2019-04-21 20:37:27 · 2062 阅读 · 2 评论 -
leetcode.804 唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-...","-.-.","-..","原创 2018-11-18 22:46:52 · 170 阅读 · 0 评论 -
leetcode.852 山脉数组的峰顶索引
我们把符合下列属性的数组 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-11-14 11:10:18 · 166 阅读 · 0 评论 -
leetcode.929 独特的电子邮件地址
每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。除了小写字母,这些电子邮件还可能包含 ',' 或 '+'。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,"alice.z@leet...转载 2018-11-12 11:31:48 · 754 阅读 · 1 评论 -
leetcode.905 按奇偶排序数组
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 5000 0 <= A[i] <=...原创 2018-11-13 16:34:04 · 125 阅读 · 0 评论 -
leetcode.709 转换成小写字母
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。 示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"思路一:直接使用 String 类自带的 toL原创 2018-11-13 15:54:39 · 202 阅读 · 0 评论 -
leetcode 938. 二叉搜索树的范围和
给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。 示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23 提示:...原创 2018-11-11 12:23:33 · 509 阅读 · 0 评论 -
使用无序数组构建符号表ArrayST
其实说是无序数组,其实也是使用队列按照输入的顺序插入,和输出。数据如下:S E A R C H E X A M P L E结果如下: * S 0 * H 5 * X 7 * R 3 * C 4 * L 11 * A 8 * M 9 * P 10 * E 12代码如下:public class ArrayST<Key, Val...原创 2018-10-21 16:54:05 · 318 阅读 · 0 评论 -
在命令行中执行 java 程序
一,首先进入文件所在的目录,我的 FrequencyCounter(统计字符出现频率最高的词) 程序放在桌面,所以使用 cd desktop 就可,你们的是 cd 路径名。二,然后使用 javac FrequencyCounter.java 生成 .class 可执行文件,你们的是 javac 文件名.java三,然后使用 java FrequencyCounter 执行文件...原创 2018-10-20 12:21:28 · 618 阅读 · 0 评论 -
leetcode.118 杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]思路:当 numRows 为 1 或者 2 的时候,值是固定的,分别是[ [1] ],[ [ 1 ] ,[ ...原创 2018-10-22 10:54:41 · 125 阅读 · 0 评论 -
leetcode 190.颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。进阶:如果多次调用这个函数,你将如何优化你...原创 2018-10-17 10:05:17 · 152 阅读 · 0 评论 -
leetcode.20 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2018-10-19 21:12:07 · 85 阅读 · 0 评论 -
leetcode 198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2018-10-10 11:58:14 · 104 阅读 · 0 评论 -
leetcode.461 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。思路:其实是算一算一个数有多...原创 2018-10-16 14:15:38 · 93 阅读 · 0 评论 -
leetcode 268. 缺失数字
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?思路一:由于题目中的数据给定的是 0~n ,所以我们可以用额外的数组来记...原创 2018-10-18 19:53:09 · 126 阅读 · 0 评论 -
leetcode.191位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 000000000000000000000000100000...原创 2018-10-15 10:37:01 · 82 阅读 · 0 评论 -
leetcode 226. 翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法...原创 2018-11-20 16:54:50 · 84 阅读 · 0 评论 -
leetcode.832 翻转图像
给定一个二进制矩阵 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-11-16 12:31:46 · 117 阅读 · 0 评论 -
leetcode.617 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 ...转载 2018-11-21 09:48:31 · 106 阅读 · 0 评论 -
蓝桥杯 -- 蚂蚁感冒
问题描述 长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。输入格式 第一行输入一个整数n (1 < ...原创 2018-12-06 23:10:59 · 188 阅读 · 0 评论 -
蓝桥杯 -- 九宫幻方
时间限制:1.0s 内存限制:256.0MB问题描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻...原创 2018-12-06 22:08:51 · 380 阅读 · 0 评论 -
蓝桥杯 -- 信用卡号的验证
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。该校验的过程:1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。3、将奇数位总和加上偶数位总和,结果应该可以被10整除...原创 2018-12-01 10:59:30 · 644 阅读 · 0 评论 -
leetcdoe.258 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?思路:利用两层循环暴力破解,内层循环求解各位的数,外层循环判断 sum 是否为各位数,如果是...原创 2018-11-28 10:20:56 · 100 阅读 · 0 评论 -
leetcode.867 转置矩阵
给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:1 <= A.length ...原创 2018-11-28 09:58:05 · 176 阅读 · 0 评论 -
leetcode.559 N叉树的最大深度
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 : 我们应返回其最大深度,3。说明:树的深度不会超过 1000。 树的节点总不会超过 5000。思路:递归的思想, DFS,如果结点为空 ,则返回为 0,如果不为空则循环遍历子节点,并递归调用本函数,使用 depth 记录每一次调用,并将其返回...转载 2018-11-27 20:10:08 · 310 阅读 · 0 评论 -
蓝桥杯 -- 第三十九级台阶
题目要求:标题: 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。要求提交的是一个...原创 2018-12-02 19:05:39 · 1249 阅读 · 1 评论 -
for 循环中的 i++ 和 ++i 区别
刷 leetcode 的时候看到大神的 for 循环中的代码是 ++i 我就纳闷了,为啥这样写。然后就写了个简单的程序看看效率是否不一样。public class testi { public static void main(String[] args) { // TODO Auto-generated method stub long t1 = System.currentT...原创 2018-12-04 17:31:53 · 997 阅读 · 1 评论 -
leetcode.590 N叉树的后序遍历
给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个 3叉树 : 返回其后序遍历: [5,6,3,2,4,1].思路:类似于二叉树的后序遍历,利用递归实现。代码:/*// Definition for a Node.class Node { public int val; public List<Node> children...转载 2018-11-25 10:49:44 · 215 阅读 · 0 评论 -
leetcode.589 N叉树的前序遍历
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]。思路:迭代的思路,利用栈结构保存结点,然后依次弹出栈中的结点,看看有无子节点,有的话在压入栈中,没有的话退出循环。代码:/*// Definition for a Node.class Node { public int val; ...转载 2018-11-26 09:54:13 · 114 阅读 · 0 评论 -
leetcode.500 键盘行
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例:输入: ["Hello", "Alaska", "Dad", "Peace"]输出: ["Alaska", "Dad"]思路:利用 Map 的键值对,存放每一行字符所对应的行数,然后将目标字符串转为小写字符串,并且转为字符数组,然后利用此字符数组,判断是否在同一行内,如果原创 2018-11-24 17:30:23 · 130 阅读 · 0 评论 -
leetcode.292 Nim游戏
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...转载 2018-11-23 10:18:12 · 129 阅读 · 0 评论 -
leetcode.922 按奇偶排序数组 II
给定一个非负整数数组 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 <...原创 2018-11-17 14:49:02 · 386 阅读 · 0 评论 -
leetcode.728 自除数
自除数 是指可以被它包含的每一位数除尽的数。例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。还有,自除数不允许包含 0 。给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。示例 1:输入: 上边界left = 1, 下边界right = 22输出: [1, 2, 3, 4, 5,...原创 2018-11-22 20:09:35 · 101 阅读 · 0 评论 -
leetcode.476 数字的补数
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。注意:给定的整数保证在32位带符号整数的范围内。 你可以假定二进制数不包含前导零位。示例 1:输入: 5输出: 2解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。示例 2:输入: 1输出: 0解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。...原创 2018-11-19 11:57:47 · 127 阅读 · 1 评论 -
leetcode 326. 3的幂指数
给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?思路一:直接用暴力破解的方法,循环 Math.pow(3,i),判断结果是否和 n 相等...原创 2018-10-14 13:07:16 · 124 阅读 · 0 评论 -
leetcode 204 计数质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法一:超出时间限制,暴力破解法,嗯,发现是真的菜鸡,暴力破解都想了很久,数为 i 的数,用 1 到 i-1 的数,取余,就可。其中,判断每一个数的时候重置 flag(标记是否质数),再在第二层循环结束的时候,用此标记判断 num 是否要...原创 2018-10-13 17:02:00 · 106 阅读 · 0 评论 -
选择排序
基本思想:首先找到数组中最小的元素,然后,将他和数组的第一个元素交换位置(如果第一个元素就是最小的元素,那么他就和自己交换)。然后,在剩下的元素中找到最小的元素将他和第二小的元素交换。如此循环往复,直到数组有序。 特点: 运行时间和输入无关,一个有序的数组和一个无序的数组运行的时间一样长; 数据移动是最少的,N 次交换; 大约需要 N^2/2 次比较,因为选择第一...原创 2018-09-22 10:36:40 · 86 阅读 · 0 评论 -
leetcode 122 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2018-08-25 17:10:21 · 125 阅读 · 0 评论 -
leetcode 26 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2018-08-25 17:02:43 · 119 阅读 · 0 评论 -
leetcode350. 两个数组的交集 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]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。进阶:...原创 2018-09-01 12:54:36 · 244 阅读 · 0 评论