leetcode刷题
这里只记录自己第一次想出来的leetcode题
咖喱东东
程序员菜鸟
展开
-
leetcode387. 字符串中的第一个唯一字符
描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示: 你可以假定该字符串只包含小写字母。思路Hash代码public class FirstUniqueCharacterInAString387 { public int firstUniqChar(String s) { int[] array = new int[26];原创 2020-08-01 09:25:50 · 145 阅读 · 0 评论 -
leetcode面试题 08.03. 魔术索引
描述魔术索引。 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0示例2: 输入:nums = [1, 1, 1] 输出:1提示:nums长度在[1, 1000000]之间思路遍历代码class Soluti原创 2020-07-31 08:46:48 · 247 阅读 · 0 评论 -
leetcode538. 把二叉搜索树转换为累加树
题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 13思路通过(右子树->根->左子树)进行遍历原创 2020-07-29 07:57:38 · 442 阅读 · 0 评论 -
leetcode96. 不同的二叉搜索树
题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2原创 2020-07-15 09:01:07 · 132 阅读 · 0 评论 -
leetcode120. 三角形最小路径和
题目描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路&am原创 2020-07-14 09:12:12 · 130 阅读 · 0 评论 -
leetcode350-两个数组的交集 II
题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。思路哈希表代码public int[] intersect(int[] nums1, int[] nums2) {原创 2020-07-13 09:11:32 · 153 阅读 · 0 评论 -
leetcode面试题 16.11.-跳水板
题目描述你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000思路首先想到遍历k,由于是从小到大排列,先让shorter为k个原创 2020-07-08 09:46:15 · 199 阅读 · 1 评论 -
leetcode2-两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路第一反应就是依次同时遍历这两个链表,期间注意进位,最原创 2020-07-07 07:45:14 · 140 阅读 · 0 评论 -
leetcode63-不同路径 II
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。原创 2020-07-06 08:56:37 · 152 阅读 · 0 评论