LeetCode题目
leetcode题目练习——Java
楼上有只喵
Java不归路。。。
展开
-
大数相加(利用字符串)
1.题目给定两个字符串形式的非负整数num1 和num2,计算它们的和。注意:num1 和num2的长度都小于 5100.num1 和num2 都只包含数字0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。2.实现思路要点:利用字符串模拟加法器进行操作step1:将两个字符...原创 2019-09-17 08:38:13 · 1322 阅读 · 0 评论 -
盛最多水的容器
1.题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2019-09-23 11:52:41 · 100 阅读 · 0 评论 -
回文数
1.题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。2.实现思路首先得到一个div,当前除以它可以得到最高位的值,再对当前数字%10,可以得到最低位的值,二者进...原创 2019-09-23 09:43:55 · 244 阅读 · 0 评论 -
整数翻转
1.题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2.实现思路从个位开始,每一位依次取出来,当前的值等于(现在的值...原创 2019-09-22 20:25:49 · 86 阅读 · 0 评论 -
链表实现两数相加
1.题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-09-22 19:33:31 · 462 阅读 · 0 评论 -
数组中求两数之和为目标数
1.题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]2.解题思路...原创 2019-09-22 10:58:00 · 1570 阅读 · 0 评论 -
字符串模式匹配(朴素模式匹配、KMP模式匹配)
1.朴素模式匹配(暴力匹配)1.1 实现思想对主串 S 和模式串 T 分别设置指针 i 和 j ,假设字符串下标从 0 开始 初始时 i 和 j 分别指向每个串的第 0 个位置。在第 n 趟匹配开始时,i 指向主串 S 中的第 n-1 个位置,j 指向模式串T的第0个位置,然后逐个向后比较。 若 T 中的每一个字符都与 S 中的字符相等,则称匹配成功,否则,当遇到某个字符不相等时,i ...原创 2019-08-08 18:01:36 · 228 阅读 · 0 评论 -
重复的DNA序列
1.题目图片来源:https://blog.csdn.net/qq_22080999/article/details/808156372.实现思路step1:枚举出所有的长度为10的子串。step2:定义一个set存放些子串,定义一个list存放出现次数大于1的子串。step3:遍历s所有的子串如果set中已经出现过对应的子串,则向list中添加这个子串。 否则向se...原创 2019-09-16 22:32:03 · 182 阅读 · 0 评论 -
压缩字符串(科大讯飞)
1.题目要求输入:aaabbce输出: 3a2bce2.实现思路step1:定义一个StringBuffer用来拼接后来新生成的字符串。step2:定义开始指针start=0,定义第二个指针j=start+1,遍历字符串中的每一项当指针当前指向的字符和它后面的元素有相同的时候sum++,sum初始为1,判断sum值当sum值>2时,输出sum值 输出此时star...原创 2019-09-16 23:30:00 · 300 阅读 · 0 评论 -
寻找和为0的元素组数
输入:1,-1,4,5,2,-2输出:2实现思路:两层循环,第一层循环是每一轮,第二层循环从当前元素的下一个元素开始向后遍历,出现和为0,即count++;代码实现public class FindPair { public static int findPair(int[] arr){ int count=0; for (int i=0;...原创 2019-09-03 17:37:59 · 380 阅读 · 1 评论 -
统计字符串出现次数(Java)
public class CountTheNumberOfPerCharacter { public static void countTheNumberOfPerCharacter(String s){ char[] array=s.toCharArray(); int[] hash=new int[128]; for(int i=0;...原创 2019-09-15 16:07:20 · 264 阅读 · 0 评论 -
利用哈希表排序整数(Java)
这里假设已知输入的数据范围在1000以内public class SortByHash { public static void sortByHash(int[] array){ int[] hash=new int[1000]; for (int i=0;i<array.length;i++){ hash[array[i...原创 2019-09-15 16:42:20 · 476 阅读 · 0 评论 -
最长回文串
1.题目给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。2.解题思路step1:利用hash表统计字符串中每个字符出现的次数step2:出现的次数为偶数,则回文串长度加上这个次数;step3:出现的次数为奇数,则回文串长度加上这个次数-1,并将标志位置1(说明这个字符可以放在最中间)step4:进行长度+标志位相加求和。3.代码实现p...原创 2019-09-15 17:41:07 · 116 阅读 · 0 评论 -
词语模式
1.题目图片来源:https://blog.csdn.net/qq_42405666/article/details/895054022.实现思路step1:创建pattern到字符串的一张映射表(哈希),用来记录pattern字符是否被使用。step2:将字符串str用空格进行拆分,如果拆分出来的字符串个数和pattern长度不匹配直接返回falsestep3:遍历s...原创 2019-09-15 22:08:54 · 237 阅读 · 0 评论 -
同字符词语分组
1.题目已知一组字符串,将所有anagram(由颠倒字母顺序而构成的字)放到一起输出。例如:["eat", "tea", "tan", "ate", "nat", "bat"]返回:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]2.实现思路定义一个映射关系,哈 希 表 以 内 部 进 行 排 序 的 各 个 单 词 为 key , ...原创 2019-09-15 23:00:29 · 277 阅读 · 0 评论 -
无重复字符的最长子串
1.题目给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串。2.解题思路定义两个指针,都从初...原创 2019-09-16 08:07:30 · 136 阅读 · 0 评论 -
罗马数字转整数
1.题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2019-09-23 12:23:40 · 117 阅读 · 0 评论