
leetcode刷题
MistyWood
这个作者很懒,什么都没留下…
展开
-
leetcode刷题:202.快乐数(Java)
题目描述:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 +...原创 2019-09-06 16:27:27 · 187 阅读 · 0 评论 -
leetcode刷题:235. 二叉搜索树的最近公共祖先(Java)
题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root ...原创 2019-09-05 15:10:40 · 216 阅读 · 0 评论 -
leetcode刷题:189. 旋转数组(Java)
题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,9...原创 2019-08-28 09:23:16 · 173 阅读 · 0 评论 -
leetcode刷题:70. 爬楼梯(Java)
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 ...原创 2019-08-28 08:59:32 · 175 阅读 · 0 评论 -
leetcode刷题:168. Excel表列名称(Java)
题目描述给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”思路:和上一篇内容相同,实质...原创 2019-08-23 14:23:16 · 277 阅读 · 0 评论 -
leetcode刷题:171. Excel表列序号(Java)
题目描述:给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701思路:这道题实际上就是将26进...原创 2019-08-23 14:07:01 · 236 阅读 · 0 评论 -
leetcode刷题:172. 阶乘后的零(Java)
题目描述:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.思路:题目求末尾有几个零,实际就是指在计算阶乘的过程中产生了几个10。有一个2*5成对就会产生一个10。2的个数肯定比5多,所以只需要找出有几个5,就能凑几个10。...原创 2019-08-23 13:57:42 · 342 阅读 · 0 评论 -
leetcode刷题:160. 相交链表(Java)
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2019-08-23 13:47:57 · 168 阅读 · 0 评论 -
leetcode刷题:整数反转(Java)
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。原创 2019-08-13 10:40:22 · 237 阅读 · 0 评论 -
leetcode刷题:两数之和(Java)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class So...原创 2019-08-13 10:23:09 · 156 阅读 · 0 评论 -
leetcode刷题:167. 两数之和 II - 输入有序数组(Java)
题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15],...原创 2019-08-21 18:21:03 · 300 阅读 · 0 评论 -
leetcode刷题:112. 路径总和(Java)
题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-08-20 23:37:21 · 267 阅读 · 0 评论 -
leetcode刷题:104. 二叉树的最大深度(Java)
题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。代码如下:/** * Definition for a binar...原创 2019-08-15 20:05:48 · 302 阅读 · 0 评论 -
leetcode刷题:232. 用栈实现队列(Java)
题目描述:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queu...原创 2019-09-05 15:30:56 · 231 阅读 · 0 评论 -
leetcode刷题:263. 丑数(Java)
题目描述:编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。输入不会超过...原创 2019-09-05 15:44:54 · 247 阅读 · 0 评论 -
leetcode刷题:344. 反转字符串(Java)
题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:...原创 2019-09-05 15:58:32 · 175 阅读 · 0 评论 -
leetcode刷题:367.有效的完全平方数(Java)
题目描述给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明: 不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False方法一://暴力解法,从头遍历所有数class Solution { public boolean isPerfectSqu...原创 2019-09-06 14:11:43 · 307 阅读 · 0 评论 -
leetcode刷题:278.第一个错误的版本(Java)
题目描述你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中...原创 2019-09-06 13:48:10 · 384 阅读 · 0 评论 -
leetcode刷题:268.缺失数字(Java)
题目描述:给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?思路:因为只缺一个数,原数组中也没有重复数据,只需要将数组中所有元素相加求和...原创 2019-09-06 13:30:51 · 249 阅读 · 0 评论 -
leetcode刷题:258. 各位相加(Java)
题目描述给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。思路:递归,直到num为个位数就返回class Solution { public int addDigits(int num) { if(nu...原创 2019-09-06 09:56:00 · 264 阅读 · 0 评论 -
leetcode刷题:22. 括号生成(Java)
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路:采用递归,在递归过程中累计"(“和”)"的数量,如果超过n了,则开始return,如果等于n,则将当前字符串存入list,如果左括号数量大于等...原创 2019-09-06 09:32:07 · 307 阅读 · 0 评论 -
leetcode刷题:283. 移动零(Java)
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:从头开始遍历数组,将非零数从头覆盖数组的元素,剩下的设为0class Solution { public void mo...原创 2019-09-06 09:12:55 · 176 阅读 · 0 评论 -
leetcode刷题:292. Nim 游戏(Java)
题目描述你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石...原创 2019-09-06 09:00:35 · 479 阅读 · 0 评论 -
leetcode刷题:204. 计数质数(Java)
题目描述统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路:1、暴力解法,遍历从2到n的所有数,再看它是否能被小于它的数整除。(此方法在较大的数面前会计算超时)2、厄拉多筛选法:先将默认所有数为质数,选中数字2,然后将数字2的倍数设为非质数;选中数字3,然后将数字3的倍数设为非质数...原创 2019-09-06 08:45:03 · 290 阅读 · 0 评论 -
leetcode刷题:231. 2的幂(Java)
题目描述:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false**思路:**如果n能被2整除,就一直对n做对2取模运算,知道不能整除2,此时如果n为1,则是2的幂次方class Solution {...原创 2019-09-05 18:09:28 · 186 阅读 · 0 评论 -
leetcode刷题:374. 猜数字大小(Java)
题目描述:我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!示例 :输入: n = 10, pick...原创 2019-09-05 17:04:10 · 820 阅读 · 0 评论 -
leetcode刷题:404. 左叶子之和(Java)
题目描述:计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24**思路:**用递归遍历二叉树,如果该节点的左叶子不为空,则将其val累加起来。/** * Definition for a binary tree node. * public clas...原创 2019-09-05 16:34:56 · 265 阅读 · 0 评论 -
leetcode刷题:237. 删除链表中的节点(Java)
题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示...原创 2019-09-05 16:07:40 · 301 阅读 · 0 评论 -
leetcode:101. 对称二叉树(Java)
题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3/** * Definition for a ...原创 2019-08-15 19:54:50 · 207 阅读 · 0 评论 -
leetcode刷题:111. 二叉树的最小深度(Java)
题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.注意:如果根节点的左或右子树为空的话是构不成子树的。而最小深度是要求从根节点到...原创 2019-08-20 21:43:59 · 355 阅读 · 0 评论 -
leetcode刷题:119. 杨辉三角 II(Java)
题目描述给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]代码:class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> row =...原创 2019-08-19 17:39:57 · 322 阅读 · 0 评论 -
leetcode刷题:118. 杨辉三角(Java)
题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]代码:class Solution { public List<List<Intege...原创 2019-08-19 17:02:45 · 185 阅读 · 0 评论 -
leetcode刷题:66. 加一(Java)
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。...原创 2019-08-14 13:05:11 · 197 阅读 · 0 评论 -
leetcode刷题:58. 最后一个单词的长度(Java)
题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5思路:本题的关键是考虑末尾的空格,1.可以用trim()函数将空格去掉再进行处理。2.也可以用split()函数,按空格将单词分割开存入数组,直接读...原创 2019-08-14 11:15:15 · 210 阅读 · 0 评论 -
leetcode刷题:53. 最大子序和(Java)
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路:遍历数组,累加值赋给sum,sum的最大值赋给max。一旦sum<=0就代表之前所有的元素和对当前元素nums[i]没有增益效果,...原创 2019-08-14 10:08:48 · 150 阅读 · 0 评论 -
leetcode刷题: 35. 搜索插入位置(Java)
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出...原创 2019-08-13 23:39:06 · 213 阅读 · 0 评论 -
leetcode刷题:28. 实现 strStr() (Java)
题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needl...原创 2019-08-13 22:38:20 · 212 阅读 · 0 评论 -
leetcode刷题:27. 移除元素(Java)
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2019-08-13 19:42:04 · 365 阅读 · 0 评论 -
leetcode刷题: 删除排序(或无序)数组中的重复项(Java)
给定一个排序(或无序)数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。原创 2019-08-13 19:28:18 · 1606 阅读 · 0 评论 -
leetcode刷题:有效的括号(Java)
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。原创 2019-08-13 18:55:00 · 552 阅读 · 0 评论