LeetCode 解题
墨1024
抬头看路,低头做事,回头自省
展开
-
LeetCode 8. 字符串转换整数 (atoi)
8. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如原创 2020-08-18 23:40:48 · 188 阅读 · 1 评论 -
LeetCode 206. 反转链表(Reverse Linked List)
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLPython3 实现迭代实现# @author:leacoder# @des: 迭代实现 反转链表'''1、先找重复处理单元 每个结点 断开指向的下一个结点,ne...原创 2019-12-21 22:36:03 · 214 阅读 · 0 评论 -
LeetCode 15. 三数之和(3Sum)
15. 三数之和给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。在真实的面试中遇到过这道题?Python3 实现暴力法# @author:leacoder# @des: 暴力求...原创 2019-12-20 01:33:06 · 216 阅读 · 0 评论 -
LeetCode 26. 删除排序数组中的重复项(Remove Duplicates from Sorted Array)
26. 删除排序数组中的重复项(Remove Duplicates from Sorted Array)26. 删除排序数组中的重复项 Remove Duplicates from Sorted Array给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完...原创 2019-12-02 00:04:33 · 124 阅读 · 0 评论 -
LeetCode 70. 爬楼梯(Climbing Stairs)
70. 爬楼梯(Climbing Stairs)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1...原创 2019-11-12 22:59:52 · 150 阅读 · 0 评论 -
LeetCode 283. 移动零(Move Zeroes)
383. 移动零(Move Zeroes)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。在真实的面试中遇到过这道题?Python3 实现双指针# @author:leacoder#...原创 2019-11-12 22:47:56 · 116 阅读 · 0 评论 -
LeetCode 121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)
LeetCode.jpg121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票...原创 2019-05-11 12:21:36 · 95 阅读 · 0 评论 -
LeetCode 123. 买卖股票的最佳时机 III(Best Time to Buy and Sell Stock III)
LeetCode.jpg123. 买卖股票的最佳时机 III123. 买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6...原创 2019-05-11 12:25:03 · 102 阅读 · 0 评论 -
LeetCode 92. 反转链表 II(Reverse Linked List)
LeetCode.jpg92. 反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL切题一、Clarificatio...原创 2019-06-24 23:14:24 · 156 阅读 · 0 评论 -
LeetCode 188. 买卖股票的最佳时机 IV(Best Time to Buy and Sell Stock IV)
LeetCode.jpg188. 买卖股票的最佳时机 IV给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的...原创 2019-05-11 12:17:56 · 145 阅读 · 0 评论 -
LeetCode 52. N皇后 II(N-Queens II)
LeetCode.jpg52. N皇后 II N皇后 II n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 image.png 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回 n 皇后不同的解决方案的数量。 示例: 输入: 4 输出: 2 解释: ...原创 2019-04-18 23:18:09 · 430 阅读 · 0 评论 -
LeetCode 338. 比特位计数(Counting Bits)
LeetCode.jpg338. 比特位计数 338. 比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] ...原创 2019-04-18 22:48:49 · 145 阅读 · 0 评论 -
LeetCode 231 .2的幂(Power of Two)
LeetCode.jpg231. 2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1: 输入: 1 输出: true 解释: 20 = 1示例 2: 输入: 16 输出: true 解释: 24 = 16示例 3: 输入: 218 输出: falsePytho...原创 2019-04-18 22:41:32 · 315 阅读 · 0 评论 -
LeetCode 191.位1的个数(Number of 1 Bits)
LeetCode.jpg191. 位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:0000000000...原创 2019-12-01 11:08:47 · 144 阅读 · 0 评论 -
LeetCode 212.单词搜索 II(212.Word Search II)
LeetCode.jpg212. 单词搜索 II给定一个二维网格 **board **和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入:words = ["oath","pea","ea...原创 2019-04-18 22:32:20 · 180 阅读 · 0 评论 -
LeetCode 300. 最长上升子序列(Longest Increasing Subsequence)
LeetCode.jpg300. 最长上升子序列 300. 最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,...原创 2019-05-11 12:28:50 · 111 阅读 · 0 评论 -
LeetCode 322. 零钱兑换(Coin Change)
LeetCode.jpg322. 零钱兑换 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: ...原创 2019-05-11 12:31:24 · 207 阅读 · 0 评论 -
LeetCode 72. 编辑距离(Edit Distance)
LeetCode.jpg72. 编辑距离 72. 编辑距离 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "...原创 2019-05-11 12:33:36 · 210 阅读 · 0 评论 -
LeetCode 5. 最长回文子串(Longest Palindromic Substring)
LeetCode.jpg5. 最长回文子串5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"切题一、Clarification求最长回文子串,这里有几个特殊情况...原创 2019-08-05 23:52:02 · 217 阅读 · 0 评论 -
LeetCode 4. 寻找两个有序数组的中位数(Median of Two Sorted Arrays)
LeetCode.jpg4. 寻找两个有序数组的中位数4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位...原创 2019-07-30 00:09:28 · 126 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
LeetCode.jpg3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pw...原创 2019-07-23 00:38:31 · 104 阅读 · 0 评论 -
LeetCode 2. 两数相加(Add Two Numbers)
LeetCode.jpg2. 两数相加 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输...原创 2019-07-15 01:05:22 · 395 阅读 · 0 评论 -
LeetCode 392. 判断子序列(Is Subsequence)
LeetCode.jpg392. 判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcd...原创 2019-07-13 15:32:36 · 339 阅读 · 0 评论 -
LeetCode 142. 环形链表 II(Linked List Cycle II)
LeetCode.jpg142. 环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出...原创 2019-07-02 01:03:44 · 216 阅读 · 0 评论 -
LeetCode 146. LRU缓存机制(LRU Cache)
LeetCode.jpg146. LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。...原创 2019-06-17 22:19:53 · 170 阅读 · 0 评论 -
LeetCode 200. 岛屿数量(Number of Islands)
LeetCode.jpg200. 岛屿数量200. 岛屿的个数 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输...原创 2019-06-11 00:17:46 · 232 阅读 · 0 评论 -
LeetCode 208.实现 Trie (前缀树) (Implement Trie (Prefix Tree))
LeetCode.jpg208. 实现 Trie (前缀树)实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // ...原创 2019-04-18 22:26:54 · 296 阅读 · 0 评论 -
LeetCode 69. x 的平方根(Sqrt(x))
LeetCode.jpg69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842...,由于返回类型是整数,小数部分将被舍去。Python3...原创 2019-04-18 01:19:03 · 111 阅读 · 0 评论 -
LeetCode 37. 解数独(Sudoku Solver)
LeetCode.jpg37. 解数独编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 空白格用 '.' 表示。image一个数独。image答案被标成红色。...原创 2019-04-02 22:54:26 · 227 阅读 · 0 评论 -
LeetCode 242. 有效的字母异位词(Valid Anagram)
LeetCode.jpg有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 uni...原创 2019-03-30 15:32:39 · 110 阅读 · 0 评论 -
LeetCode 239. 滑动窗口最大值(Sliding Window Maximum)
LeetCode.jpg滑动窗口最大值给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3...原创 2019-03-30 15:26:39 · 332 阅读 · 0 评论 -
LeetCode 25.k个一组翻转链表(Reverse Nodes in k-Group)
LeetCode.jpgk个一组翻转链表给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5...原创 2019-03-18 23:36:07 · 304 阅读 · 0 评论 -
LeetCode 232. 用栈实现队列(Implement Queue using Stacks)
LeetCode.jpg用栈实现队列用栈实现队列(Implement Queue using Stacks)使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue(...原创 2019-03-18 23:27:50 · 326 阅读 · 0 评论 -
LeetCode 20.有效的括号(Valid Parentheses)
LeetCode.jpg有效的括号有效的括号(Valid Parentheses)给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "...原创 2019-03-18 23:12:56 · 110 阅读 · 0 评论 -
LeetCode 31. 下一个排列(Next Permutation)
31. 下一个排列(Next Permutation)31. 下一个排列(Next Permutation)实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,...原创 2019-09-29 22:31:58 · 333 阅读 · 0 评论 -
LeetCode 24. 两两交换链表中的节点(Swap Nodes in Pairs)
两两交换其中相邻的节点LeetCode 24. 两两交换链表中的节点(Swap Nodes in Pairs)给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.切题一、Clarifica...原创 2019-03-16 22:13:19 · 188 阅读 · 0 评论 -
LeetCode 141. 环形链表(Linked List Cycle)
环形链表环形链表(Linked List Cycle)给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点...原创 2019-03-16 23:33:38 · 117 阅读 · 0 评论 -
LeetCode 17. 电话号码的字母组合(Letter Combinations of a Phone Number)
17. 电话号码的字母组合17. 电话号码的字母组合(Letter Combinations of a Phone Number) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd",...原创 2019-09-18 23:00:45 · 311 阅读 · 0 评论 -
LeetCode 11. 盛最多水的容器(Container With Most Water)
11. 盛最多水的容器11. 盛最多水的容器(Container With Most Water) 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至...原创 2019-09-16 23:17:25 · 247 阅读 · 0 评论 -
LeetCode 703. 数据流中的第K大元素(Kth Largest Element in a Stream)
LeetCode.jpg数据流中的第K大元素设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = ...原创 2019-03-30 15:35:34 · 163 阅读 · 0 评论