
LeetCode解题
慕枫技术笔记
InfoQ签约作者,阿里云专家博主,一线大厂高级开发工程师,专注Java后端以及分布式架构,分享大厂面试经验以及简历编写指导
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode解题之十八:LRU
题目 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删原创 2021-06-13 22:17:07 · 853 阅读 · 6 评论 -
LeetCode解题之十六:最大子序和
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 解答 public class Solution { public int maxSubArray(int[] A) { if...原创 2019-12-27 18:38:56 · 433 阅读 · 1 评论 -
LeetCode解题之十五:四数之和
题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: ...原创 2019-12-06 21:55:06 · 389 阅读 · 1 评论 -
LeetCode解题之十四:移除元素
题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个...原创 2019-11-08 20:47:08 · 325 阅读 · 0 评论 -
LeetCode解题之十三:搜索插入位置
题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 示例 输入: [1,3,5,6], 5 输出: 2 输入: [1,3,5,6], 2 输出: 1 输入: [1,3,5,6], 7 输出: 4 输入: [1,3,5,6], 0 输出: 0 解决 ...原创 2019-10-26 10:09:02 · 501 阅读 · 0 评论 -
LeetCode解题之十二:三数之和
题目 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组 示例 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 分析 ...原创 2019-09-15 09:35:59 · 455 阅读 · 0 评论 -
LeetCode解题之十一:回文数
题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 分析...原创 2019-08-18 21:43:10 · 399 阅读 · 0 评论 -
LeetCode解题之十:整数排列
题目 给定一个不同整数的集合,返回所有可能的排列。 示例 Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 分析 由于是不同的整数则可以分别按照指针进行不断的排列即可。比如上面的例子,我们先排列以1位开始的所有可能组合,再排列2,一次类推,最后得到所有的排列组合...原创 2019-07-28 09:27:14 · 482 阅读 · 0 评论 -
LeetCode解题之九:移除元素
题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2019-07-06 11:12:32 · 312 阅读 · 0 评论 -
LeetCode解题之八:两两交换链表中的节点
题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 给定 1->2->3->4, 你应该返回 2->1->4->3. 解答 本题主要实现链表中的节点交换。可以采用递归或者非递归的方式进行解答。本文采用非递归的方式进行编码,通过更新两个节点的链表来整个链表的调整。 public ...原创 2019-06-23 11:54:20 · 346 阅读 · 0 评论 -
LeetCode解题之七:合并两个有序链表
题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 分析 比较链表对应值的大小,根据比较结果追加到新建的链表中。最后把末尾没有比较的对象追加到结果链表中。 解答 public class ListNode ...原创 2019-06-09 09:47:22 · 349 阅读 · 0 评论 -
LeetCode解题之六:有效的括号
题目 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 分析 本题不难,...原创 2019-03-31 17:55:27 · 333 阅读 · 0 评论 -
LeetCode解题之五:整数转罗马数字
题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在...原创 2019-03-03 15:45:58 · 1961 阅读 · 0 评论 -
LeetCode解题之四:最长公共前缀
题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 题目分析 ...原创 2018-10-14 22:55:42 · 522 阅读 · 0 评论 -
LeetCode解题之三:无重复字符的最长子串
题目 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意原创 2018-07-29 01:20:00 · 350 阅读 · 0 评论 -
LeetCode解题之二:Add Two Numbers
题目 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 ->原创 2018-06-29 15:16:40 · 471 阅读 · 0 评论 -
LeetCode解题之一:Two Sum
分析:这道题比较简单,实质上就是数字配对的过程。 public class TwoSum { public static void main(String[] args) { int[] parmas = {2, 7, 11, 15}; System.out.println(Arrays.toString(twoSum(parmas, 9))); ...原创 2018-06-08 21:42:16 · 525 阅读 · 0 评论