leetcode-初级
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
leetcode-058-最后一个单词的长度
从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。解法1(成功,1ms,较慢)原创 2023-06-09 22:34:31 · 59 阅读 · 0 评论 -
leetcode-035-搜索插入位置
情况 1:如果当前 mid 看到的数值严格小于 target,那么 mid 以及 mid 左边的所有元素就一定不是「插入元素的位置」,因此下一轮搜索区间是 [mid + 1..right],下一轮把 left 移动到 mid + 1 位置,因此设置 left = mid + 1;说明:上面的两点中,「情况 2」其实不用分析得那么细致, 因为只要「情况 1」的区间分析是正确的,「情况 2」一定是「情况 1」得到的区间的反面区间。根据示例,分析题目要我们返回的「插入元素的位置」是什么。原创 2023-05-06 23:29:10 · 475 阅读 · 0 评论 -
leetcode-027-移除元素
如果左指针 left 指向的元素等于 val,此时将右指针 right 指向的元素复制到左指针 left 的位置,然后右指针 right 左移一位。如果赋值过来的元素恰好也等于 val,可以继续把右指针 right 指向的元素的值赋值过来(左指针 left 指向的等于 val 的元素的位置继续被覆盖),直到左指针指向的元素的值不等于 val 为止。如果右指针指向的元素不等于 val,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移;解法1(成功,0ms,极快)原创 2023-05-05 23:11:04 · 732 阅读 · 0 评论 -
leetcode-009-回文数
这里需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。如果是奇数的话,最中间的数字就在revertNum 的最低位上,将它除以 10 以后应该和 x 相等。将最低的数字加到取出数的末尾:revertNum = revertNum * 10 + y。每次进行取余操作 ( %10),取出最低的数字:y = x % 10。通过取整和取余操作获取整数中对应的数字进行比较。原创 2023-04-20 21:19:01 · 361 阅读 · 0 评论 -
leetcode-617-合并二叉树-java
题目及测试package pid617;/*617. 合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1原创 2020-10-16 16:31:15 · 133 阅读 · 0 评论 -
leetcode-543-二叉树的直径-java
题目及测试package pid543;/*543. 二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间原创 2020-09-29 10:42:20 · 184 阅读 · 0 评论 -
leetcode-448-找到所有数组中消失的数字-java
题目及测试package pid448;/*448. 找到所有数组中消失的数字给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]*/import java.原创 2020-09-01 11:40:26 · 190 阅读 · 0 评论 -
leetcode-226-翻转二叉树-java
题目及测试package pid226;/*226. 翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这原创 2020-08-10 15:15:28 · 186 阅读 · 0 评论 -
leetcode-384-打乱数组(shuffle an array)-java
题目及测试package pid384;/* Shuffle an Array打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。so...原创 2018-10-11 10:59:25 · 735 阅读 · 0 评论 -
leetcode-88-合并两个有序数组(merge sorted array)-java
题目及测试package pid088;/*合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:...原创 2018-09-27 10:32:59 · 289 阅读 · 0 评论 -
leetcode-155-最小栈(min stack)-java
题目及用例package pid155;/* 最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new ...原创 2018-10-12 09:55:47 · 1119 阅读 · 0 评论 -
leetcode-191-位1的个数(number of one bits)-java
题目及测试package pid191;/*位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 0...原创 2018-10-18 09:58:49 · 498 阅读 · 0 评论 -
leetcode-278-第一个错误的版本(first bad version)-java
题目及测试package pid278;/*第一个错误的版本你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(v...原创 2018-09-29 10:54:25 · 276 阅读 · 0 评论 -
leetcode-121-买卖股票的最佳时机(best time to buy and sell stock)-java
题目与测试package pid121;/*买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(...原创 2018-10-08 11:38:05 · 173 阅读 · 0 评论 -
leetcode-412 -Fizz Buzz-(fizz bzz)-java
题目及测试package pid412;/* Fizz Buzz写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", ...原创 2018-10-15 09:40:18 · 215 阅读 · 0 评论 -
leetcode-204-计数质数(count primes)-java
题目及用例package pid204;/* 计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。*/import java.util.List;public class main { public static void main(String[] a...原创 2018-10-15 11:12:22 · 556 阅读 · 0 评论 -
leetcode-70-爬楼梯(climbing trees)-java
题目及测试package pid070;/*爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼...原创 2018-09-30 10:24:44 · 283 阅读 · 0 评论 -
leetcode-53- 最大子序和(maximum subarray)-java
题目及用例package pid053;/*最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。*/...原创 2018-10-09 11:29:59 · 475 阅读 · 0 评论 -
leetcode-198-打家劫舍(house robber)-java
题目及用例package pid198;/* 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出:...原创 2018-10-10 11:06:51 · 161 阅读 · 0 评论 -
leetcode-190-颠倒二进制位(reverse bits)-java
题目及测试package pid190;/*颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 001110010111100000101001010...原创 2018-10-22 11:18:02 · 905 阅读 · 0 评论 -
leetcode-13-罗马数字转整数(roman to integer)-java
题目及测试package pid013;/*罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1...原创 2018-10-17 11:38:00 · 157 阅读 · 0 评论 -
leetcode-268-缺失数字(missing number)-java
题目及测试package pid268;/* 缺失数字给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?*/pu...原创 2018-10-25 10:29:11 · 240 阅读 · 0 评论 -
leetcode-118-杨辉三角(pascl triangle)-java
题目及测试package pid118;/*帕斯卡三角形给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]*/import java.util.List...原创 2018-10-23 13:39:13 · 309 阅读 · 0 评论 -
leetcode-java-20-有效的括号(valid parentheses)-java
题目及测试package pid020;/* 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输...原创 2018-10-24 11:12:53 · 191 阅读 · 0 评论 -
leetcode-344-反转字符串(reverse string)-java
题目及测试用例package pid344;/*反转字符串编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"*/public c原创 2018-08-10 11:42:15 · 871 阅读 · 2 评论 -
leetcode-108-将有序数组转换为二叉搜索树(convert sorted array to binary search tree)-java
题目及用例package pid108;import java.util.List;/*将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,...原创 2018-09-26 11:03:37 · 173 阅读 · 0 评论 -
leetcode-101-对称二叉树(symmetric tree)-java
题目及用例package pid101;/*对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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 ...原创 2018-09-20 12:31:33 · 179 阅读 · 0 评论 -
leetcode-7-反转整数(reverse integer)-java
题目及用例package pid007;/* 颠倒整数给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后...原创 2018-08-12 16:34:40 · 815 阅读 · 0 评论 -
leetcode-217-存在重复元素(Contains Duplicate)-java
题目及测试用例package pid217;/*存在重复给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,...原创 2018-08-03 11:05:58 · 663 阅读 · 0 评论 -
leetcode-1-两数之和(two sum)-java
题目及测试用例package pid001;/*两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]*/public ...原创 2018-08-07 15:31:07 · 698 阅读 · 0 评论 -
leetcode-242-有效的字母异位词(valid anagram)-java
题目及用例package pid242;/*有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。原创 2018-08-14 11:51:21 · 337 阅读 · 0 评论 -
leetcode-283-移动零(remove zeroes)-java
题目及测试用例package pid283;/*移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。*/public class main { ...原创 2018-08-06 14:32:46 · 309 阅读 · 0 评论 -
leetcode-66-加一(PLUS one)-java
题目及测试package pid66;/*加一给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出...原创 2018-08-05 11:44:08 · 275 阅读 · 0 评论 -
leetcode-350-两个数组的交集 II( Intersections of two arrays II)-java
题目及测试用例package pid350;/*两个数组的交集 II给定两个数组,写一个方法来计算它们的交集。例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。跟进: ...原创 2018-08-04 22:53:58 · 464 阅读 · 0 评论 -
leetcode-136-只出现一次的数字(single number)-java
题目及测试函数package pid136;/*给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4*/public class ma...原创 2018-08-03 16:31:54 · 247 阅读 · 0 评论 -
leetcode-189-旋转数组( Rotate Array)-java
题目及测试用例package pid189;/*旋转数组给定一个数组,将数组中的元素向右移动 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,...原创 2018-07-29 17:16:30 · 1163 阅读 · 0 评论 -
leetcode-122-买卖股票的最佳时机 II-java
题目及测试用例package pid122;//买卖股票的最佳时机 II////给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。////设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。////注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。////示例 1:////输入: [7,1,5,3,6,...原创 2018-07-25 13:24:09 · 1535 阅读 · 0 评论 -
leetcode-36- 有效的数独(valid sudoku)-java
题目及测试用例package pid036;/*有效的数独判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格...原创 2018-08-08 14:34:12 · 449 阅读 · 0 评论 -
leetcode-387-字符串中的第一个唯一字符(first unique character in a string)-java
题目及用例package pid387;/* 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.*/public class main { public static void main(Str...原创 2018-08-13 11:57:51 · 447 阅读 · 0 评论 -
leetcode-125-验证回文串(valid palindrome)-java
题目及用例package pid125;/*验证回文字符串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false*/...原创 2018-08-16 10:56:19 · 373 阅读 · 0 评论