Leetcode
2018k
天道酬勤,功不唐捐 :)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode22.括号生成
文章目录题目描述题解DFS(java)DFS2(java)题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]题解DFS(java)比较经典的dfs解法,比起全部遍历添...原创 2020-04-12 23:40:44 · 255 阅读 · 0 评论 -
Leetcode面试题13.机器人的运动范围
文章目录题目描述题解DFS(java)DFS2(java)BFS(java)题目描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1]。一个机器人从坐标[0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但...原创 2020-04-08 23:29:24 · 299 阅读 · 0 评论 -
Leetcode2.两数相加
文章目录题目描述题解常规法1(java)常规法2(java)题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6...原创 2020-04-07 23:59:07 · 224 阅读 · 0 评论 -
Leetcode72.编辑距离
文章目录题目描述题解动态规划(java)题目描述给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为...原创 2020-04-07 00:33:36 · 205 阅读 · 0 评论 -
Leetcode42.接雨水
文章目录题目描述题解暴力法(java)单调栈(java)动态规划(java)题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。说明:输入: [0,1,0,2,1,0,1,3,2,1,...原创 2020-04-05 00:22:13 · 305 阅读 · 0 评论 -
Leetcode8.字符串转换整数
文章目录题目描述题解方法一(java)方法二(java)题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来...原创 2020-04-04 00:16:46 · 197 阅读 · 0 评论 -
Leetcode203. 移除链表元素
文章目录题目描述题解哨兵法(java)题目描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5题解哨兵法(java)思路:比较简单,但如果忘记设置哨兵节点的话,处理起来第一个节点会有点麻烦,算是一个trick,用来返回he...原创 2020-03-31 00:10:30 · 172 阅读 · 0 评论 -
Leetcode429. N叉树的层序遍历
文章目录题目描述题解迭代法(java)递归(java)题目描述给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。示例:返回其层序遍历:[[1],[3,2,4],[5,6]]说明:树的深度不会超过 1000。树的节点总数不会超过 5000。题解迭代法(java)思路:用队列处理,在输出列表中添加了当前节点的值之后再把该节点的子节点都添加到...原创 2020-03-26 23:51:10 · 305 阅读 · 0 评论 -
Leetcode589.N叉树的前序遍历
文章目录题目描述题解递归(java)迭代(java)递归2(java)题目描述给定一个 N 叉树,返回其节点值的前序遍历。示例:返回其前序遍历: [1,3,5,6,2,4]。题解递归(java)思路:效率很低,但是比较好理解的递归思路class Solution { public List<Integer> preorder(Node root) { ...原创 2020-03-26 00:05:25 · 278 阅读 · 0 评论 -
Leetcode590.N叉树的后序遍历
文章目录题目描述题解头插法后序遍历(java)递归(java)题目描述给定一个 N 叉树,返回其节点值的后序遍历。示例:返回其后序遍历: [5,6,3,2,4,1].题解头插法后序遍历(java)思路:对树进行遍历,同时用头插来保证后序遍历。/*// Definition for a Node.class Node { public int val; p...原创 2020-03-25 00:09:31 · 267 阅读 · 0 评论 -
Leetcode50.Pow(x, n)
文章目录题目描述题解暴力(java)分治(java)题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2−22^{-2}2−2 = 1/221/2^{2}1/...原创 2020-03-24 00:21:08 · 192 阅读 · 0 评论 -
Leetcode349.两个数组的交集
文章目录题目描述题解集合去重法(java)集合去重法2(java)题目描述给定两个数组,编写一个函数来计算它们的交集。示例1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考...原创 2020-03-17 00:13:43 · 307 阅读 · 0 评论 -
Leetcode面试题03.数组中重复的数字
文章目录题目描述题解哈希表(java)哈希表2(java)交换法(java)题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3说明:2 &l...原创 2020-03-16 00:04:26 · 221 阅读 · 0 评论 -
Leetcode1.两数之和
文章目录题目描述题解暴力(java)哈希法(java)题目描述给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + ...原创 2020-03-13 23:44:51 · 141 阅读 · 0 评论 -
Leetcode49.字母异位词分组
文章目录题目描述题解哈希法(java)字母个数法(java)题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。...原创 2020-03-13 22:13:38 · 208 阅读 · 0 评论 -
Leetcode242.有效的单词异位词
文章目录题目描述题解哈希法(java)排序法(java)题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = “anagram”, t = “nagaram”输出: true示例2:输入: s = “rat”, t = “car”输出: f...原创 2020-03-10 23:47:09 · 203 阅读 · 0 评论 -
Leetcode141.环形链表
文章目录题目描述题解快慢指针法(java)哈希表(java)题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:...原创 2020-03-09 23:41:08 · 165 阅读 · 0 评论 -
Leetcode239.滑动窗口最大值
文章目录题目描述题解暴力(java)双端队列(java)题目描述给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,...原创 2020-03-04 23:46:13 · 205 阅读 · 0 评论 -
Leetcode155.最小栈
文章目录题目描述题解两个栈(java)单栈法(java)题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new M...原创 2020-03-03 22:03:06 · 215 阅读 · 0 评论 -
Leetcode225.用队列实现栈
文章目录题目描述题解用Linklist常用函数模拟(java)题目描述使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空说明:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is e...原创 2020-03-02 00:02:28 · 299 阅读 · 0 评论 -
Leetcode20.有效的括号
文章目录题目描述题解入栈法(java)暴力法(java)题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: “()”输出: true示例2:输入: “(]”输出: false...原创 2020-02-27 23:39:57 · 281 阅读 · 0 评论 -
Leetcode24.两两交换表中的节点
文章目录题目描述题解迭代法(java)递归(java)题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.题解似乎链表题目,解法通常都是迭代和递归。迭代法(java)思路:/** * Defin...原创 2020-02-25 12:20:45 · 196 阅读 · 0 评论 -
Leetcode21.合并两个有序链表
文章目录题目描述题解迭代法(java)递归法(java)题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解迭代法(java)思路:新建表头,并声明curr指针。判断两个链表的头节点大小...原创 2020-02-25 11:33:34 · 162 阅读 · 0 评论 -
Leetcode206.反转链表
文章目录题目描述题解迭代法(java)递归法(java)题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL说明:你能否用两种方法解决这道题?题解经典链表题目,方法就是递归或迭代。迭代法(java)思路:其实想法不是很复杂,但是叙述起来有点麻烦...原创 2020-02-24 12:22:11 · 149 阅读 · 0 评论 -
Leetcode.26删除排序数组中的重复项
文章目录题目描述题解双指针法(java)题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中...原创 2020-02-23 17:02:42 · 169 阅读 · 0 评论 -
Leetcode88.合并两个有序数组
文章目录题目描述题解暴力(java)双指针法:从后向前(java)题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6]...原创 2020-02-23 16:39:16 · 163 阅读 · 0 评论 -
Leetcode189.旋转数组
文章目录题目描述题解使用额外的数组(java)暴力法(java)三次翻转(java)题目描述给定一个数组,将数组中的元素向右移动 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...原创 2020-02-22 23:07:17 · 223 阅读 · 0 评论 -
Leetcode66.加一
文章目录题目描述题解常规思路(java)数组数值转换(python)题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]...原创 2020-02-22 21:31:12 · 244 阅读 · 0 评论 -
Leetcode1.两数之和
leetcode1原创 2020-02-20 20:52:57 · 180 阅读 · 0 评论 -
Leetcode70.爬楼梯
文章目录题目描述题解正常递归(java)自底向上进行迭代(java)题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例2:输入: 3输出...原创 2020-02-20 17:58:29 · 232 阅读 · 0 评论 -
Leetcode11.盛最多水的容器
文章目录题目描述题解双指针法(java)双指针法(python)暴力(java)题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。[外链图片转...原创 2020-02-18 22:23:28 · 240 阅读 · 0 评论 -
Leetcode283.移动零
文章目录题目描述题解双指针法 (java)双指针法(python)题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解双指针法 (java)用指针来指向第一个零元素的位置,然后把非零元...原创 2020-02-17 18:52:14 · 290 阅读 · 0 评论
分享