leetcode
一叶之修
内疚学习法
展开
-
leetcode 42. 接雨水(Trapping Rain Water)
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...原创 2018-08-22 19:29:15 · 423 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
无重复字符的最长子串 题目(Medium)Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bb...原创 2018-08-28 01:59:16 · 148 阅读 · 0 评论 -
leetcode 20. 有效的括号(Valid Parentheses)
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2018-08-30 00:44:22 · 330 阅读 · 0 评论 -
leetcode 455. 分发饼干(Assign Cookies) java beat 100%
一道贪心水题 beat100% 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最...原创 2018-08-30 00:52:30 · 403 阅读 · 0 评论 -
leetcode 36. 有效的数独(Valid Sudoku)
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",".","...原创 2018-08-30 00:58:16 · 121 阅读 · 0 评论 -
leetcode 14. 最长公共前缀(14. Longest Common Prefix)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入原创 2018-08-30 01:02:56 · 107 阅读 · 0 评论 -
leetcode 67. 二进制求和(Add Binary)
easy understand method 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101" 思路:并不是1ms解法,普通做法,提原创 2018-08-30 01:08:41 · 193 阅读 · 1 评论 -
leetcode 37. 解数独(Sudoku Solver)
编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 '.' 。 你可以假设给定的数独只有唯一解...原创 2018-08-30 01:14:12 · 266 阅读 · 0 评论 -
leetcode 206. 反转链表(Reverse Linked List) java beat 100%
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 原题链接 建议递归和非递归都实现一下 非递归 public ListNode ...原创 2018-09-08 13:58:07 · 201 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素(Remove Duplicates from Sorted List) java beat 100%
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3 思路:cur.next = cur.next.next;// cur不需要++,因为下一个仍是待判断元素,它也有可能仍...原创 2018-09-08 15:07:28 · 129 阅读 · 0 评论 -
leetcode 100. 相同的树(Same Tree) java beat 100%
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-09-09 00:05:09 · 286 阅读 · 0 评论 -
leetcode 257. 二叉树的所有路径(Binary Tree Paths)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 原题链接 dfs还不是熟悉,此方式并不是最优方法...原创 2018-09-09 00:10:54 · 126 阅读 · 0 评论 -
leetcode 671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree) java beat 100%
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明: 最小的值是...原创 2018-09-09 00:17:59 · 378 阅读 · 0 评论 -
leetcode 226. 翻转二叉树(Invert Binary Tree) java beat 100%
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1 备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是...原创 2018-09-09 00:27:06 · 349 阅读 · 0 评论 -
leetcode 96. 不同的二叉搜索树(Unique Binary Search Trees) java beat 100%
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2018-09-16 00:37:44 · 368 阅读 · 0 评论 -
leetcode 687. 最长同值路径(Longest Univalue Path)
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:...原创 2018-09-16 10:12:59 · 282 阅读 · 0 评论 -
leetcode 腾讯 2018 秋招精选(50 题)
前面原题链接,后面题解链接 原题(50题)链接 目录 # 题名 解答 通过率 难度 104 二叉树的最大深度 64.1% 简单 344 反转字符串 62.5% 简单 292 ...原创 2018-09-16 10:24:11 · 4770 阅读 · 0 评论 -
leetcode 104. 二叉树的最大深度(Maximum Depth of Binary Tree)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 原题链接 思路:递归,从递归的思想出发,每步可以简单...原创 2018-09-16 10:31:15 · 264 阅读 · 0 评论 -
leetcode 344. 反转字符串(Reverse String)
编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A" 原题链接 思路:这题相对比较基础,所以对自己也要更高一点,对比多几种方式,下面为其中之一,另外一...原创 2018-09-16 10:50:30 · 250 阅读 · 0 评论 -
leetcode 292. Nim游戏(Nim Game)
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2018-09-16 11:27:05 · 415 阅读 · 0 评论 -
leetcode 557. 反转字符串中的单词 III(Reverse Words in a String III)
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 原题链接 思路先spilt分隔空格,调用自己写...原创 2018-09-16 12:36:04 · 199 阅读 · 0 评论 -
leetcode 237. 删除链表中的节点(Delete Node in a Linked List)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之...原创 2018-09-16 12:51:47 · 267 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字(Single Number)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4 思路:这题如果使用哈希表来做也很简单,但这里可以只用数组实现,先把数组排好序,然后判断...原创 2018-09-16 12:57:21 · 212 阅读 · 0 评论 -
leetcode 169. 求众数(Majority Element)
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2 原题链接 思路:使用哈希表,这解法比较暴力,不详细介绍了 class Solut...原创 2018-09-16 13:10:59 · 206 阅读 · 0 评论 -
leetcode 9. 回文数(Palindrome Number)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2018-09-17 10:04:24 · 307 阅读 · 0 评论 -
leetcode 155. 最小栈(Min Stack)
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack....原创 2018-09-17 10:05:33 · 258 阅读 · 0 评论 -
leetcode 235. 二叉搜索树的最近公共祖先(Lowest Common Ancestor of a Binary Search Tree)
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] _______6__...原创 2018-09-17 10:06:31 · 357 阅读 · 0 评论 -
leetcode 21. 合并两个有序链表(Merge Two Sorted Lists)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 递归 /** * Definition for singly-linked list. * public class Li...原创 2018-09-17 10:07:41 · 148 阅读 · 0 评论 -
leetcode 141. 环形链表(Linked List Cycle)
给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题? 原题链接 还是双指针比较好,哈希表当然也是不错的做法,下面我试着2个都实现~~双指针一快一满,当是环形的时候,fast会追上slow哈希表就把node都放进表里,有相同地址的node就说明是环形 双指针/** * Definition for singly-l...原创 2018-09-17 10:09:34 · 226 阅读 · 0 评论 -
leetcode 160. 相交链表(Intersection of Two Linked Lists)
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。 注意:如果两个链表没...原创 2018-09-17 10:10:33 · 166 阅读 · 0 评论 -
leetcode 46. 全排列(Permutations) beat 99.28%
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] emmmmmm 距离beat 100% 1ms之差,好吧,也是能接受的 思路:回溯,与自身后面包括自己交换,交换后递归到下...原创 2018-09-17 10:08:34 · 145 阅读 · 0 评论 -
leetcode 14. 最长公共前缀(Longest Common Prefix)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入原创 2018-09-17 18:27:01 · 171 阅读 · 0 评论 -
leetcode 7. 反转整数(Reverse Integer)
给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。 思路:...原创 2018-09-17 18:32:43 · 207 阅读 · 0 评论 -
leetcode 78. 子集(Subsets) beat 100%
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []] 原题链接 思路: 这是一道很不错的回溯题,他和全排列一...原创 2018-09-17 19:09:08 · 571 阅读 · 0 评论 -
leetcode 122. 买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II) beat 100%
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2018-09-18 17:41:52 · 181 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2018-09-18 17:43:04 · 138 阅读 · 0 评论 -
leetcode 88. 合并两个有序数组(Merge Sorted Array)
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-09-18 18:22:59 · 190 阅读 · 0 评论 -
leetcode 231. 2的幂(Power of Two)
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false 原题链接 思路:判断一个整数是不是2的幂,可根据二进制来分析。2的幂如2,4,8,等有一个特点:二进制数首位为1,其他...原创 2018-09-18 17:56:34 · 214 阅读 · 0 评论 -
leetcode 217. 存在重复元素(Contains Duplicate)
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true 不用哈希表的...原创 2018-09-18 18:03:21 · 322 阅读 · 0 评论 -
leetcode 70. 爬楼梯(Climbing Stairs)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2018-09-18 18:12:53 · 176 阅读 · 0 评论