
LeetCode
文章平均质量分 56
LeetCode习题集
若即若离ing
希望可以一起交流IT心得与体会。共同进步哈!!!
展开
-
有效的括号序列
给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。样例括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。import java.util.Scanner;import java.util.Stack;/** * 给定一个字符串所表示的括原创 2017-08-15 22:29:03 · 815 阅读 · 1 评论 -
等价二叉树
检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。您在真实的面试中是否遇到过这个题? Yes样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树原创 2017-07-31 22:33:21 · 559 阅读 · 0 评论 -
分割回文串II
给定一个字符串s,将s分割成一些子串,使每个子串都是回文。返回s符合要求的的最少分割次数。样例比如,给出字符串s = "aab",返回 1, 因为进行一次分割可以将字符串s分割成["aa","b"]这样两个回文子串import java.util.Scanner;/** * 给定一个字符串s,将s分割成一些子串,使每个子串都是回文。返回s符合要求的的最少分割次数。原创 2017-07-30 23:29:40 · 695 阅读 · 0 评论 -
房屋染色
这里有n个房子在一列直线上,现在我们需要给房屋染色,分别有红色蓝色和绿色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小。费用通过一个nx3 的矩阵给出,比如cost[0][0]表示房屋0染红色的费用,cost[1][2]表示房屋1染绿色的费用。 注意事项所有费用都是正整数样例costs = [[14,2,11],[11,14,5],原创 2017-07-30 16:55:20 · 807 阅读 · 0 评论 -
最多有多少个点在同一条直线上
给出二维平面上的n个点,求最多有多少点在同一条直线上。样例给出4个点:(1, 2), (3, 6), (0, 0), (1, 3)。一条直线上的点最多有3个。import java.util.HashMap;import java.util.Map;import java.util.Scanner;/** * 给出二维平面上的n个点,求最多有多少点在同一条直线上。样原创 2017-07-29 21:17:54 · 1911 阅读 · 0 评论 -
x的n次幂
实现 pow(x,n) 注意事项不用担心精度,当答案和标准输出差绝对值小于1e-3时都算正确样例Pow(2.1, 3) = 9.261Pow(0, 1) = 0Pow(1, 0) = 1import java.util.Scanner;/** * 实现 pow(x,n) 注意事项不用担心精度,当答案和标准输出差绝对值小于1e-3时都算正确样例Pow(2原创 2017-07-29 20:05:37 · 904 阅读 · 0 评论 -
颜色分类
给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。我们可以使用整数 0,1 和 2 分别代表红,白,蓝。 注意事项不能使用代码库中的排序函数来解决这个问题。排序需要在原数组中进行。样例给你数组 [1, 0, 1, 2], 需要将该数组原地排序为 [0, 1, 1, 2]。import java.uti原创 2017-07-28 22:56:12 · 584 阅读 · 0 评论 -
空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。你的程序还需要返回被替换后的字符串的长度。对于字符串"Mr John Smith", 长度为 13替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 17 作为结果返回。import java.util.Sc原创 2017-07-28 22:26:26 · 481 阅读 · 0 评论 -
链表插入排序
用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->nullimport java.util.Scanner;/** * * 用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->null * @author Dell * */public cla原创 2017-07-27 22:46:04 · 506 阅读 · 0 评论 -
判断字符串中每个字符是否唯一出现
实现一个算法确定字符串中的字符是否均唯一出现样例给出"abc",返回 true给出"aab",返回 falseimport java.util.HashMap;import java.util.Scanner;/** * 实现一个算法确定字符串中的字符是否均唯一出现样例给出"abc",返回 true给出"aab",返回 false * * @author D原创 2017-07-27 21:25:49 · 1183 阅读 · 0 评论 -
分割回文串I
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回s所有可能的回文串分割方案。样例给出 s = "aab",返回[ ["aa", "b"], ["a", "a", "b"]]import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * 给定原创 2017-07-25 23:43:40 · 818 阅读 · 0 评论 -
和为零的子矩阵
* 给定一个整数矩阵,请找出一个子矩阵,使得其数字之和等于0.输出答案时,请返回左上数字和右下数字的坐标。您在真实的面试中是否遇到过这个题? Yes样例给定矩阵[ [1 ,5 ,7], [3 ,7 ,-8], [4 ,-8 ,9],]返回 [(1,1), (2,2)]import java.util.HashMap;import java原创 2017-07-25 10:57:25 · 511 阅读 · 0 评论 -
排序矩阵中的从小到大第k个数
在一个排序矩阵中找从小到大的第 k 个整数。排序矩阵的定义为:每一行递增,每一列也递增。样例给出 k = 4 和一个排序矩阵:[ [1 ,5 ,7], [3 ,7 ,8], [4 ,8 ,9],]返回 5。挑战 使用O(k log n)的方法,n为矩阵的宽度和高度中的最大值。import java.util.Comparator;impo原创 2017-07-24 21:35:46 · 1084 阅读 · 0 评论 -
逆波兰表达式求值
求逆波兰表达式的值。在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。样例["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6import java.util.原创 2017-07-24 20:12:28 · 568 阅读 · 0 评论 -
二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。样例a = 11b = 1返回 100import java.util.Scanner;import java.util.Stack;/** * 给定两个二进制字符串,返回他们的和(用二进制表示)。样例a = 11b = 1返回 100 * * @author Dell * */public c原创 2017-07-24 17:05:26 · 459 阅读 · 0 评论 -
经典二分查找问题
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1样例给出数组 [1, 2, 2, 4, 5, 5].对于 target = 2, 返回 1 或者 2.对于 target = 5, 返回 4 或者 5.对于 target = 6, 返回 -1.import java.util.Scanner;/** * 在一个排序数组中找一个数,返回该原创 2017-07-24 16:24:38 · 368 阅读 · 0 评论 -
两个整数相除
将两个整数相除,要求不使用乘法、除法和 mod 运算符。如果溢出,返回 2147483647 。样例给定被除数 = 100 ,除数 = 9,返回 11。package com.nuaa.sg;import java.util.Scanner;/** * 将两个整数相除,要求不使用乘法、除法和 mod 运算符。如果溢出,返回 2147483647 。样例给定被除数原创 2017-07-24 16:03:54 · 594 阅读 · 0 评论 -
最大正方形
在一个二维01矩阵中找到全为1的最大正方形样例1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0返回 4import java.util.Scanner;/** * 在一个二维01矩阵中找到全为1的最大正方形样例1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0返回 4 * @author Dell原创 2017-07-23 21:35:42 · 743 阅读 · 0 评论 -
连续子数组求和
给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)样例给定 [-3, 1, 3, -3, 4], 返回[1,4].package com.nuaa.sg;import java.util.ArrayList;import java.util.Scanner;/**原创 2017-07-23 20:32:34 · 460 阅读 · 0 评论 -
在O(1)时间复杂度内删除指定节点
给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4/** * Definition for ListNode. * public class ListNode { *原创 2017-07-23 16:46:53 · 710 阅读 · 0 评论 -
接雨水
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.Trapping Rain Water样例如上图所示,海拔分别为 [0,1,0,2,原创 2017-07-22 21:10:05 · 540 阅读 · 0 评论 -
把排序数组转换为高度最小的二叉搜索树
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项There may exist multiple valid solutions, return any of them.样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7import j原创 2017-07-22 17:09:21 · 536 阅读 · 0 评论 -
装最多水的容器
给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。样例给出[1,3,2], 最大的储水面积是2.import java.util.Scanner;/** * 给定 n 个非负整数 a1,原创 2017-07-22 16:49:45 · 646 阅读 · 0 评论 -
克隆二叉树
深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5原创 2017-07-22 11:14:01 · 355 阅读 · 0 评论 -
最后一个单词的长度
import java.util.Scanner;/** * 给定一个字符串, 包含大小写字母、空格' ',请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。一个单词的界定是,由字母组成,但不包含任何的空格。样例给定 s = "Hello World",返回 5。 * * @author Dell * */public class Te原创 2017-07-22 11:05:20 · 278 阅读 · 0 评论 -
找出无序数组中的最小的k个数(利用大根堆)
package com.itheima.paixu;import java.util.Scanner;/** * 找到无序数组中最小的k个数 * @author Dell * */public class Test3 { public static int[] getMinKNumsByHeap(int[]a ,int k) { if(a.length==0||ka.l原创 2017-07-15 11:08:54 · 1000 阅读 · 0 评论 -
合并k个排序链表
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->nullimport java.util.ArrayList;import java.util.List;import java.util.PriorityQueue;import java.util.原创 2017-07-12 17:20:51 · 703 阅读 · 1 评论 -
余弦相似度
Cosine similarity is a measure of similarity between two vectors of an inner product space that measures the cosine of the angle between them. The cosine of 0° is 1, and it is less than 1 for any othe原创 2017-07-12 16:54:31 · 615 阅读 · 0 评论 -
链表归并排序
package com.Tecent.success.sg;import java.util.Scanner;/** * 归并排序链表版 * * @author Dell * */class ListNode{ public int val; public ListNode next; public ListNode(int val) { this.va原创 2017-07-12 10:36:23 · 130 阅读 · 0 评论 -
数组归并排序
package com.Tecent.success.sg;import java.util.Scanner;/** * 归并排序数组版 * @author Dell * */public class GuiBing { public static void MergeSort(int[] a, int start,int end) { if(start<end)原创 2017-07-12 10:35:10 · 517 阅读 · 0 评论 -
子树
有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例下面的例子中 T2 是 T1 的子树: 1原创 2017-07-11 20:51:54 · 506 阅读 · 0 评论 -
排序列表转化为二分查找树
给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树样例 21->2->3 => / \ 1 3 import java.util.Scanner;/** * * 给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树样例 21-原创 2017-07-11 20:21:27 · 489 阅读 · 0 评论 -
最近公共祖先
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 注意事项假设给出的两个节点都在树中存在您在真实的面试中是否遇到过这个题? Yes样例对于下面这棵二叉树 4 / \3 7 / \ 5 6LCA(3, 5) = 4LCA(原创 2017-07-07 13:29:24 · 454 阅读 · 0 评论 -
删除链表中倒数第n个节点
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n您在真实的面试中是否遇到过这个题? Yes样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null./** * De原创 2017-07-07 13:31:50 · 338 阅读 · 0 评论 -
最长上升连续子序列
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注意事项time样例给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4.给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为原创 2017-07-04 14:08:31 · 554 阅读 · 0 评论 -
有效回文串
给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。 注意事项你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。在这个题目中,我们将空字符串判定为有效回文。样例"A man, a plan, a canal: Panama" 是一个回文。"race a car" 不是一个回文。import java.util.Scanne原创 2017-07-04 13:35:06 · 545 阅读 · 0 评论 -
搜索旋转排序数组II
跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。样例给出[3,4,4,5,7,0,1,2]和target=4,返回 trueimport java.util.Scanner;/** * 跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如原创 2017-07-04 12:34:23 · 421 阅读 · 0 评论 -
搜索旋转排序数组I
假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。样例给出[4, 5, 1, 2, 3]和target=1,返回 2给出[4, 5, 1, 2, 3]和target=0,返回 -1import j原创 2017-07-04 11:16:33 · 412 阅读 · 0 评论 -
First Position Unique Character
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.样例Given s = "lintcode", return 0.Given s = "lovelintcode", return 2.import原创 2017-07-02 22:56:37 · 622 阅读 · 0 评论 -
字符串置换
给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。置换的意思是,通过改变顺序可以使得两个字符串相等。样例"abc" 为 "cba" 的置换。"aabc" 不是 "abcc" 的置换。import java.util.HashMap;import java.util.Map;import java.util.Scanner;/** * 给定原创 2017-07-02 22:38:45 · 726 阅读 · 0 评论