LeetCode
阿狸远翔
这个作者很懒,什么都没留下…
展开
-
LeetCode 8. 字符串转换整数 (atoi)
8. 字符串转换整数 atoi题目描述分析代码题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了...原创 2019-12-11 17:41:37 · 201 阅读 · 0 评论 -
220. 存在重复元素 III
#220. 存在重复元素 III题目描述给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t =...原创 2019-12-04 17:39:32 · 213 阅读 · 0 评论 -
LeetCode 46. 全排列
46. 全排列题目描述分析代码题目描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]分析全排列有很多题,比如随意给定几个数字,求全排列的第x个。本题是输出所有全排列的组合,深度遍历就好。pat刷多了,突然使用Java写深度遍历好别扭...原创 2019-12-04 15:32:39 · 141 阅读 · 0 评论 -
俄罗斯套娃信封问题
俄罗斯套娃信封问题题目给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],...原创 2019-12-02 15:51:24 · 353 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组 java
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入:nums = [4,5,6,7,0,1,2], target = ...原创 2019-08-07 23:58:13 · 170 阅读 · 0 评论 -
LeetCode 547. 朋友圈 java
班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 ...原创 2019-08-08 00:01:44 · 243 阅读 · 0 评论 -
Leetcode 695. 岛屿的最大面积
题目给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1...原创 2019-08-08 17:41:50 · 181 阅读 · 0 评论 -
146. LRU缓存机制
题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使...原创 2019-08-09 00:24:30 · 154 阅读 · 0 评论 -
42. 接雨水
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6分析解法参考:https://leet...原创 2019-08-09 00:48:16 · 134 阅读 · 0 评论 -
LeetCode 155. 最小栈
题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); ...原创 2019-08-09 14:43:07 · 192 阅读 · 0 评论 -
leetcode 142. 环形链表 II
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-08-09 16:36:42 · 137 阅读 · 0 评论 -
1. 两数之和
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回[0, 1]分析使用hash...原创 2019-08-09 23:54:43 · 160 阅读 · 0 评论 -
LeetCode 15. 三数之和
题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2] ]分析这个题O(n2)的算法比较...原创 2019-08-10 17:01:47 · 135 阅读 · 0 评论 -
LeetCode - Java 206 反转链表
题目描述206#反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解法:1. 迭代 -- 头插法/** * Definition for singly...原创 2019-06-05 14:20:01 · 110 阅读 · 0 评论 -
LeetCode 674. 最长连续递增序列 java
给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 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-05-07 19:01:35 · 452 阅读 · 0 评论 -
LeetCode 215. 数组中的第K个最大元素
题目在未排序的数组中找到第k个最大的元素。请注意,它是数组有序排列后的第k个最大元素,而不是第k个不同元素。例如,给出[3,2,1,5,6,4]和k = 2,返回5。注意事项:你可以假设k总是有效的,1 ≤ k ≤数组的长度。方法一: 先对数组快速排序再选择第K大的。时间复杂度O(nlgn) 空间复杂度O(1)方法二: 维持一个大小...原创 2019-05-09 15:32:56 · 305 阅读 · 0 评论 -
11. 盛最多水的容器 LeetCode(Java代码)
给定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-03-02 17:25:29 · 197 阅读 · 0 评论 -
6. Z 字形变换 leetcode
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的...原创 2019-03-09 11:09:31 · 97 阅读 · 0 评论 -
LeetCode -Java 5. 最长回文子串
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"分析: 暴力解法: 选出所有子字符串可能的开始和结束位置,并检验它是不是回文。复杂度O(n*n*n) ...原创 2019-03-14 17:20:33 · 234 阅读 · 0 评论 -
二叉树专题 :翻转镜像、对称、遍历、所有路径
翻转一棵二叉树。 class TreeNode { //二叉树定义 int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public TreeNode invertTree(TreeNode ...原创 2019-03-20 22:53:03 · 323 阅读 · 0 评论 -
leetcode -java 56. 合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-03-21 22:23:22 · 182 阅读 · 0 评论 -
LeetCode -Java 516. 最长回文子序列
给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。分析: 最小回文子串:子串是连续的。最小回文子序列:可以去掉几个字符。本题类似最小回文子串...原创 2019-03-18 19:48:23 · 1525 阅读 · 0 评论 -
LeetCode 70. 爬楼梯 (Java)动态规划
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-04-10 11:38:22 · 457 阅读 · 0 评论 -
84. 柱状图中最大的矩形 (没有指针 Java给一个数组追加数字太难用)
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10 /** ...原创 2019-04-10 16:39:30 · 103 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置 java
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2分析: 正常二分查找,最后加个判断条件就好。 public static int searchInsert(int[] nums, i...原创 2019-05-04 19:49:19 · 327 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 java
34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4] ...原创 2019-05-04 20:22:57 · 230 阅读 · 0 评论 -
LeetCode 227. 基本计算器 II java
227. 基本计算器 II实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+,-,*,/四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1分析: 题目不难,仔细读题发现式子中含有空格,别忘了处理。本题有通用做法:先把中缀表达...原创 2019-05-06 15:47:28 · 703 阅读 · 0 评论 -
LeetCode 简化路径 java
简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录...原创 2019-05-06 19:06:24 · 392 阅读 · 0 评论 -
2. 两数相加 LeetCode
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-03-01 22:34:09 · 125 阅读 · 0 评论