算法方面
分享一些洛谷和Leetcode的算法题解
Kuroko_
今天不努力,明天变垃圾
展开
-
LeetCode P338---比特位计数 两种方法实现(Java)
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/counting-bits著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]第一种方法就是调用Java的APIJava的Integ原创 2021-03-03 11:10:04 · 227 阅读 · 0 评论 -
LeetCode P216---组合总和III 递归回溯解决
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-iii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n原创 2020-09-11 12:42:10 · 172 阅读 · 0 评论 -
LeetCode P733-图像渲染 深度优先搜索、广度优先搜索
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/flood-fill著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标原创 2020-08-16 09:29:17 · 136 阅读 · 3 评论 -
LeetCode P100--相同的树 深度优先搜索遍历解决
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/same-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:1 1/ \ / \2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入:1原创 2020-08-07 08:35:59 · 136 阅读 · 0 评论 -
LeetCode P104--二叉树的最大深度
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \原创 2020-07-28 08:34:45 · 115 阅读 · 0 评论 -
LeetCode P167--两数之和II - 输入有序数组
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个原创 2020-07-20 13:26:22 · 59 阅读 · 0 评论 -
LeetCode P35--搜索插入位置
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-insert-position著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:原创 2020-07-17 20:14:42 · 103 阅读 · 0 评论 -
LeetCode P349-两个数组的交集、P350-两个数组的交集II
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arrays著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。349、给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:原创 2020-07-15 07:19:52 · 93 阅读 · 0 评论 -
LeetCode P122--买卖股票的最佳时机 II 动态规划实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。类似题目:https://blog.csdn.net/weixin_44215175/article/details/107243764给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更原创 2020-07-10 10:09:55 · 595 阅读 · 0 评论 -
LeetCode P121--买卖股票的最佳时机
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释:原创 2020-07-10 09:58:58 · 216 阅读 · 0 评论 -
LeetCode 面试题 16.11--跳水板 动态规划、数学方法
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/diving-board-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2 k = 3输出原创 2020-07-08 08:50:02 · 185 阅读 · 0 评论 -
LeetCode P112--路径总和 递归实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。**给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。**说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 /原创 2020-07-07 08:27:50 · 207 阅读 · 0 评论 -
LeetCode P63--不同路径II
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。文章参考LeetCode官方题解:https://leetcode-cn.com/problems/unique-paths-ii/solution/bu-tong-lu-jing-ii-by-leetcode-solution-2/一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记转载 2020-07-07 00:01:28 · 127 阅读 · 0 评论 -
LeetCode P108--将有序数组转换为二叉搜索树 递归实现
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-1原创 2020-07-03 08:44:55 · 125 阅读 · 0 评论 -
LeetCode P70--爬楼梯
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/climbing-stairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释:原创 2020-07-02 08:50:27 · 118 阅读 · 0 评论 -
LeetCode 面试题39--数组中出现次数超过一半的数字 两种方法解答
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2示例 2:输入: [3,2,3]输出: 3示例 3:输入: [2,2,1,原创 2020-06-10 09:11:05 · 566 阅读 · 0 评论 -
LeetCode 面试题29--顺时针打印矩阵 转圈圈??
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix =[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4原创 2020-06-05 14:42:12 · 261 阅读 · 0 评论 -
LeetCode P238--除自身以外数组的乘积 前缀、后缀
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/product-of-array-except-self著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数原创 2020-06-04 14:49:02 · 119 阅读 · 0 评论 -
LeetCode 面试题64--求1+2+...+n 两行代码就够了?
LeetCode官方题解:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/qiu-12n-by-leetcode-solution/题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qiu-12n-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条原创 2020-06-02 09:19:31 · 142 阅读 · 0 评论 -
LeetCode P101--对称二叉树 递归、迭代
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null原创 2020-05-31 12:01:49 · 149 阅读 · 0 评论 -
LeetCode P974-- 和可被K整除的子数组 前缀和、HashMap
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subarray-sums-divisible-by-k著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释: 有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5原创 2020-05-28 09:21:19 · 129 阅读 · 0 评论 -
LeetCode P69--x的平方根 二分法、牛顿迭代法实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。原创 2020-05-14 16:36:13 · 219 阅读 · 0 评论 -
LeetCode P221---最大正方形 动态规划实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: ...原创 2020-05-08 10:30:17 · 266 阅读 · 0 评论 -
LeetCode P572---另一个树的子树 用递归实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subtree-of-another-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树...原创 2020-05-07 11:10:11 · 110 阅读 · 0 评论 -
LeetCode P202---快乐数 你快乐了吗
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/happy-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 ...原创 2020-05-02 00:04:24 · 92 阅读 · 0 评论 -
LeetCode P23--合并K个有序链表
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出:...原创 2020-05-01 23:52:31 · 102 阅读 · 0 评论 -
LeetCode P19--删除链表的倒数第N个结点 一次遍历实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n ...原创 2020-04-24 20:56:13 · 140 阅读 · 0 评论 -
LeetCode P18---四数之和 三数之和的plus
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/4sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。此题和三数之和、最接近的三数之和类似给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 ta...原创 2020-04-22 22:28:41 · 156 阅读 · 0 评论 -
LeetCode P16---最接近的三数之和
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。此题和三数之和想法一样,附上链接给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定...原创 2020-04-22 22:17:43 · 78 阅读 · 0 评论 -
LeetCode P15---三数之和 双指针实现
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:...原创 2020-04-22 22:12:57 · 116 阅读 · 0 评论 -
LeetCode P11--盛最多水的容器
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i,...原创 2020-04-22 22:00:35 · 94 阅读 · 0 评论 -
LeetCode 面试题13--机器人的运动范围 BFS解决
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移...原创 2020-04-22 19:38:08 · 156 阅读 · 0 评论 -
LeetCode 面试题14-1.剪绳子
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…...原创 2020-04-16 10:53:40 · 206 阅读 · 0 评论 -
LeetCode 面试题01.07--旋转矩阵 原地计算?
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rotate-matrix-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到?示例 1:给定 matrix =[...原创 2020-04-16 10:33:29 · 117 阅读 · 0 评论 -
LeetCode P13--罗马数字转整数
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/roman-to-integer著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X ...原创 2020-04-07 20:46:41 · 75 阅读 · 0 评论 -
LeetCode P12--整数转罗马数字
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/integer-to-roman著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X ...原创 2020-04-07 20:41:25 · 81 阅读 · 0 评论 -
LeetCode P73--矩阵置零
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/set-matrix-zeroes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]...原创 2020-04-02 19:41:09 · 106 阅读 · 0 评论 -
LeetCode P5--最长回文子串
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “ab...原创 2020-04-02 19:23:37 · 89 阅读 · 0 评论 -
LeetCode P4--寻找两个有序数组中的中位数
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以...原创 2020-03-31 20:56:06 · 186 阅读 · 0 评论 -
LeetCode P3--无重复字符的最长子串
题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释:...原创 2020-03-31 20:48:40 · 91 阅读 · 0 评论