
LeetCode
文章平均质量分 64
码农在途
『 码农在途 』公众号作者 ,在这里你会看见一个编程小白成长的历程。感谢你的关注 ,期待和你一起共同成长。
展开
-
LeetCode22. 括号生成
22. 括号生成 题目链接解题思路:创建组合原理,先放左括号,再放右括号,左括号数不能超过 n,右括号数要与右括号数一致public List<String> generateParenthesis(int n) { List<String> list = new ArrayList<>(); backList...原创 2020-04-16 22:50:58 · 949 阅读 · 0 评论 -
LeetCode542. 01 矩阵
542. 01 矩阵 题目链接解题思路:动态规划当前坐标最小距离=上下左右最小距离+1 or 当前坐标为0public int[][] updateMatrix(int[][] matrix) { int rowLen = matrix.length, colLen = matrix[0].length; int[][] result = new int[ro...原创 2020-04-15 21:14:13 · 1028 阅读 · 0 评论 -
LeetCode445. 两数相加 II
445. 两数相加 II 题目链接解法一:两个栈存储链表元素,依次遍历 l1,l2,依次遍历 stackL1、stackL2,头结点插入生成新链表,carry 标志进位public ListNode addTwoNumbers(ListNode l1, ListNode l2) { Stack<Integer> stackL1 = new Stack<>...原创 2020-04-14 21:43:06 · 1164 阅读 · 0 评论 -
LeetCode151. 翻转字符串里的单词
151. 翻转字符串里的单词 题目链接解法一:去除字符串首尾空格,从尾部开始遍历字符串public String reverseWords(String s) { if (s == null || s.length() < 1) { return s; } char[] str = s.trim().toCharAr...原创 2020-04-10 15:04:04 · 412 阅读 · 0 评论 -
LeetCode面试题13. 机器人的运动范围
面试题13. 机器人的运动范围 题目链接解题思路:从坐标 ( 0 ,0 ) 开始向右、下遍历,判断是否满足规则(坐标位数之和不大于 k),且未被访问。满足要求则运动范围 count++,继续遍历;不满足,则返回上一有效坐标,进行有效遍历。private int[] moveX = {1, 0}, moveY = {0, 1}; private int coun...原创 2020-04-08 11:38:33 · 349 阅读 · 0 评论 -
LeetCode面试题 01.07. 旋转矩阵
面试题 01.07. 旋转矩阵 题目链接解题思路:顺时针旋转 90° 对应转换规则 (x,y)->(y,n-x) ,n=N-1public void rotate(int[][] matrix) { if (matrix == null || matrix.length < 1) { return; } int...原创 2020-04-07 10:57:25 · 347 阅读 · 0 评论 -
LeetCode460. LFU缓存
460. LFU缓存 题目链接解题思路:哈希表+优先队列Map<Integer, Node> cache 存储缓存 key、value,PriorityQueue freQueue 按使用频率和最近使用时间降序存储缓存元素,static int timer 计数表示每个元素的使用时间,int capacity 记录缓存的容量put 元素时,判断是否已存在:存在则更新使用频率和最近...原创 2020-04-05 23:26:54 · 225 阅读 · 0 评论 -
LeetCode8. 字符串转换整数 (atoi)
8. 字符串转换整数 (atoi) 题目链接解题思路:1、当 str 去除前端空格后,第一个字符不为数字、+、-,则直接返回 02、sign 记录正负号,默认为 +,3、 当 sign 为 +,prefix = Integer.MAX_VALUE / 10 suffix = 74、 当 sign 为 -,prefix = Integer.MAX_VALUE / 10 suffix = 8...原创 2020-04-03 13:28:31 · 184 阅读 · 0 评论 -
LeetCode289. 生命游戏
289. 生命游戏 题目链接解题思路:1、创建 res[][] 存储下一状态,countAlive(int x,int n,board) 计算当前坐标点八个相邻位置的活细胞数。2、遍历 board,当遍历元素值为 0,且活细胞数为 0;或遍历元素值为 1 ,活细胞数小于 2、大于 3,活细胞变死细胞,死细胞变活细胞;否,则与 board 状态一致。public void gameOfLif...原创 2020-04-02 11:22:36 · 258 阅读 · 0 评论 -
LeetCode124. 二叉树中的最大路径和
124. 二叉树中的最大路径和 题目链接解题思路:当前节点最大路径值=Max(左子树最大路径值,右子树最大路径值)+当前节点值若左右子树最大路径值为负数,则不加上子树路径值(子树路劲值设为 0)以后序遍历顺序依次计算每一节点路径值,max 存储最大值即可 private int maxPath = Integer.MIN_VALUE; public int maxPathSum(T...原创 2020-04-01 18:22:13 · 344 阅读 · 0 评论 -
LeetCode912. 排序数组
912. 排序数组 题目链接解法一:桶排序public int[] sortArray(int[] nums) { int[] bucket = new int[100001]; for (int num : nums) { bucket[num + 50000]++; } int index = 0; ...原创 2020-03-31 22:26:30 · 173 阅读 · 0 评论 -
LeetCode面试题62. 圆圈中最后剩下的数字
面试题62. 圆圈中最后剩下的数字解法一:暴力枚举以 new ArrayList<>(n) 模拟圆圈,每次移除 圆圈中按顺序数到的第 m 个数,最后剩余的那个数就是我们需要找的数。public int lastRemaining(int n, int m) { List<Integer> cycle = new ArrayList<>(n...原创 2020-03-30 20:00:12 · 287 阅读 · 0 评论 -
LeetCode1162. 地图分析
1162. 地图分析解题思路:动态规划1、当前坐标距离为上下左右距离最小值+12、两次距离计算,第一次以上左为参照,第二次以下右为参照,如果是陆地标记为 03、maxDistance 记录最大距离public int maxDistance(int[][] grid) { int maxDistance = -1; int[][] distance = n...原创 2020-03-29 23:10:44 · 244 阅读 · 0 评论 -
LeetCode820. 单词的压缩编码
820. 单词的压缩编码 题目链接解法一:1、遍历字符串,建立 set,len 记录压缩后的列表长度初始化为 02、将 words 按照字符串长度降序排序,方便过滤后缀子串3、若所遍历字符串不在 set 中,且不是 set 中任一字符后缀)则加入 set4、 否,则 len+= word.length+1 ,继续遍历下一字符public int minimumLengthEncodin...原创 2020-03-28 22:59:56 · 316 阅读 · 0 评论 -
LeetCode914. 卡牌分组
914. 卡牌分组解题思路:遍历 deck 以每个非重复数字为 key,出现次数为 value若所有的 value 存在最大公约数(大于 1),则返回 true,否则返回 false。public boolean hasGroupsSizeX(int[] deck) { Map<Integer, Integer> map = new HashMap<>...原创 2020-03-27 14:23:38 · 206 阅读 · 0 评论 -
#LeetCode999. 车的可用捕获量
999. 车的可用捕获量解题思路:1、设白色车的坐标为 (x,y),白色车的行进路线为(0,x)、(x,7)、(0,y)、(y,7)2、count 记录能捕获卒的最大数量,最小为0,最大为 43、当行进路程中遭遇 ‘P’(卒)或 ‘B’(象) 时停止前进,且在遭遇卒时 count++class Solution { public int numRookCaptures(char[...原创 2020-03-26 10:45:26 · 179 阅读 · 0 评论 -
LeetCode892. 三维形体的表面积
892. 三维形体的表面积 题目链接解题思路:总表面积 = 柱体表面积 - 重叠面积每一个坐标点上的立方体可看作一个柱体(长方体),柱体上下两面面积一定存在,中间四面表面积受重叠影响,减去的面积为相邻坐标点更低柱体侧面积。思路参考:https://leetcode-cn.com/problems/surface-area-of-3d-shapes/solution/shi-li-you-t...原创 2020-03-25 23:27:30 · 213 阅读 · 0 评论 -
LeetCode30. 串联所有单词的子串
30. 串联所有单词的子串 题目链接解法一思路:暴力匹配,每次取 s 定长字符串,与 words 单词匹配,若能完全匹配则将子串起始索引加入结果匹配规则:当前遍历字符串(s.substring(i, i + wordLen))在 words 存在(去除完全不可能的匹配),且与 words 组成的哈希表也一致。public List<Integer> findSubstring(...原创 2020-03-24 20:31:33 · 170 阅读 · 0 评论 -
LeetCode-面试题 17.16. 按摩师
面试题 17.16. 按摩师 题目链接解题思路:动态规划,由果溯因dp[n][0]表示不接受当前数的最大预约时长 = Max(dp[n-1][0],dp[n-1][1])dp[n][1] 表示接受当前数的最大预约时长 = dp[n-1][0]+nums[n]当前最大预约时长= Max(dp[n][0],dp[n][1])class Solution { public int m...原创 2020-03-24 09:35:43 · 381 阅读 · 0 评论 -
LeetCode57. 插入区间
57. 插入区间 题目链接解题思路:1、依据题意可以将区间列表分为 3 个部分:小于 newInterval[0]、与 newInterval 重叠、大于 newInterval[1].2、对于 newInterval 非重叠区域,只需要保持原样即可,对于 newInterval 重叠区间,进行合并。public int[][] insert(int[][] intervals, int[...原创 2020-03-23 20:50:24 · 270 阅读 · 0 评论 -
LeetCode876. 链表的中间结点
876. 链表的中间结点 题目链接解题思路:双指针法,快指针一次走两步,慢指针一次走一步,当快指针走完链表时,慢指针指向的就是中间节点。public ListNode middleNode(ListNode head) { ListNode fast = head, slow = head; while (fast != null && fast...原创 2020-03-23 11:36:51 · 137 阅读 · 0 评论 -
LeetCode945. 使数组唯一的最小增量
945. 使数组唯一的最小增量 题目链接解法一:对数组 A 升序排序,count 记录需要操作的次数。若 A[i]<=A[i-1],count+=A[i-1]+1-A[i],A[i]=A[i-1]+1。public int minIncrementForUnique(int[] A) { Arrays.sort(A); int count = 0; ...原创 2020-03-22 20:52:21 · 203 阅读 · 0 评论 -
LeetCode365. 水壶问题
365. 水壶问题 题目链接解法一:BFS把问题化简为:寻找一条从 0 -> z 的路径,每次可以有 6 种操作。1、 将 X 倒满2、将 Y 倒满3、将 X 水倒出4、将 Y 水倒出5、将 X 水倒入 Y 中6、将 Y 水导入 X 中通过化简我们可以将操作精简为:+x,+y,-x,-y。(3、5合并为 -x,4、6合并为 -y)使用变量 cur 记录当前状态,visut...原创 2020-03-21 21:42:19 · 284 阅读 · 0 评论 -
LeetCode78. 子集
78. 子集 题目链接解法一:回溯法依次创造 1…nums.length 长度的子数组createSubSet,创造子数组subSets 存储已生成子数组private List<List<Integer>> subSets = new ArrayList<>(); public List<List<Integer>> ...原创 2020-03-20 16:25:42 · 177 阅读 · 0 评论 -
LeetCode409. 最长回文串
409. 最长回文串 题目链接解题思路:最长回文串为偶数字符总数+(存在奇数字符+1,不存在奇数字符+0)public int longestPalindrome(String s) { if (s == null || s.length() < 1) { return 0; } int oddLen = 0, e...原创 2020-03-19 11:45:33 · 165 阅读 · 0 评论 -
LeetCode836. 矩形重叠
836. 矩形重叠 题目链接解法一:正难则反,若 rec1 与 rec2 不相交,则 rec1 四条边都应该在 rec2 外部。rec1 位于 rec2 左侧,rec1[2]<=rec2[0],rec1 位于 rec2 右侧,rec2[2]<=rec1[0],rec1 位于 rec2 上侧,rec2[3]<=rec1[1],rec1 位于 rec2 下侧,rec1[3...原创 2020-03-18 10:57:28 · 152 阅读 · 0 评论 -
LeetCode1160. 拼写单词
LeetCode1160 题目链接思路分析:以 chars 建立哈希表 dictionary(字符,出现次数)建立辅助方法 isValid(),判断 words 中字符是否完全匹配匹配规则:word 字符在 dictionary 中出现,且数量大于 0,每匹配一次数量-1len 记录已完全匹配字符累计长度public int countCharacters(String[] words...原创 2020-03-17 11:12:42 · 274 阅读 · 0 评论 -
LeetCode334. 递增的三元子序列
LeetCode334 题目链接给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。思路分析:1、基于 LeetCode300. 最长上升子序列解法,increaseSequence 存储递增序列依序遍历 nums。2、若遍历数值小于递增序列末尾数值则加入序列,若大于递增序列末尾则替换序列中首个大于当前遍历数的值。3、当序列长度等于 3 时,返回true,否,返回 ...原创 2020-03-14 16:37:49 · 250 阅读 · 0 评论 -
LeetCode1013
LeetCode1013题目链接:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum解法一:对数组求和/3=三等分值 flagcount 记录满足要求的等分数,依序遍历数组 A当 flag!=A【i】 时继续遍历数组 flag-=A【i】当 flag==A【i】 时,coun...原创 2020-03-11 10:13:08 · 151 阅读 · 0 评论 -
LeetCode695. 岛屿的最大面积
LeetCode695. 岛屿的最大面积给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0...原创 2019-10-29 16:18:03 · 378 阅读 · 0 评论 -
LeetCode763. 划分字母区间
划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入: S = “ababcbacadefegdehijhklij”输出: [9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 ...原创 2019-10-25 10:16:17 · 260 阅读 · 0 评论 -
LeetCode605. 种花问题
种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = ...原创 2019-10-23 15:39:52 · 311 阅读 · 0 评论 -
LeetCode452. 用最少数量的箭引爆气球
用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xs...原创 2019-10-22 11:22:51 · 148 阅读 · 0 评论 -
LeetCode435. 无重叠区间
无重叠区间给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。来源:力扣(LeetCode)链接:h...原创 2019-10-22 10:42:37 · 320 阅读 · 0 评论 -
LeetCode455. 分发饼干
分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口...原创 2019-10-22 09:36:27 · 117 阅读 · 0 评论 -
LeetCode75. 颜色分类
颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]来源:力扣(LeetCode)链接:https:...原创 2019-10-22 09:32:19 · 109 阅读 · 0 评论 -
LeetCode347. 前 K 个高频元素
前 K 个高频元素 题目链接给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]思路分析:1、根据 nums 统计每个元素出现的次数,以 Integer 为 key 出现次数为 value2、再根据次数进行桶排序,对排序后的数倒序遍历加入 result 结果集,当前 k 个数 遍历...原创 2019-10-21 11:54:00 · 128 阅读 · 0 评论 -
LeetCode524. 通过删除字母匹配到字典里最长单词
通过删除字母匹配到字典里最长单词给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出:“apple”来源:力扣(L...原创 2019-10-21 11:00:53 · 210 阅读 · 0 评论 -
LeetCode345. 反转字符串中的元音字母
反转字符串中的元音字母 题目链接编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”思路分析:双指针法,left、right 指针遍历至元音字符时停止两指针都遍历到元音字符时交换字符,继续遍历,指针相交结束遍历返回结果class Solution { public String reverseVowels(S...原创 2019-10-21 10:20:23 · 150 阅读 · 0 评论 -
LeetCode633. 平方数之和
平方数之和给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-square-numbers解题思路:双指针法,从【0-sqrt ( c )】...原创 2019-10-21 09:59:51 · 310 阅读 · 0 评论