![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
h_astro
天文爱好者中的码农
展开
-
LeetCode-146LRU缓存机制-cpp
LeetCode-day47-146LRU缓存机制-cpp题目回顾题解cpp代码题目回顾传送门运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) ...原创 2019-06-29 13:29:20 · 225 阅读 · 0 评论 -
LeetCode-day31-反转链表-迭代-cpp
LeetCode-day31-反转链表-迭代-cpp题目回顾题解cpp代码题目回顾传送门反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?题解参考官方题解,未实现方法二-递归时间复杂度: ...原创 2019-06-10 09:11:10 · 225 阅读 · 0 评论 -
LeetCode-day30-买卖股票的最佳时机II-低谷高峰-cpp
LeetCode-day30-买卖股票的最佳时机II-低谷高峰-cpp题目回顾题解cpp代码题目回顾传送门给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7...原创 2019-06-09 22:59:07 · 181 阅读 · 0 评论 -
LeetCode-day40-237删除链表中的节点-cpp
LeetCode-day40-237删除链表中的节点-cpp题目回顾题解cpp题目回顾传送门请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点...原创 2019-06-19 11:22:29 · 145 阅读 · 0 评论 -
LeetCode-day39-344反转字符串-双指针-easy-cpp
LeetCode-day39-344反转字符串-双指针-easy-cpp题目回顾题解cpp题目回顾传送门编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","...原创 2019-06-19 10:38:11 · 295 阅读 · 0 评论 -
LeetCode-day35-排序链表-归并排序-cpp
LeetCode-day35-排序链表-归并排序-cpp题目回顾题解cpp代码题目回顾传送门在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3-&g...原创 2019-06-14 09:17:22 · 220 阅读 · 0 评论 -
LeetCode-day29-买卖股票的最佳时机-低谷高峰-cpp
LeetCode-day29-买卖股票的最佳时机-低谷高峰-cpp题目回顾题解cpp代码题目回顾传送门给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 =...原创 2019-06-08 16:50:18 · 192 阅读 · 0 评论 -
LeetCode-day24-子集-位运算-py
LeetCode-day24-子集-位运算-py题目回顾题解py未优化时间代码py 优化后代码题目回顾传送门给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。**说明:**解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,...原创 2019-06-02 15:34:48 · 162 阅读 · 0 评论 -
LeetCode-day28-合并两个有序数组-双指针-简单-cpp
LeetCode-合并两个有序数组-双指针-简单-cpp题目回顾题解cpp代码题目回顾传送门给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。...原创 2019-06-06 22:30:13 · 207 阅读 · 0 评论 -
LeetCode-day23-不同路径-动态规划-py
LeetCode-day23-不同路径-动态规划-py题目回顾题解py 空间复杂度O(n*m)py空间复杂度O(2n)py 空间复杂度O(n)题目回顾传送门一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?start...原创 2019-06-01 11:49:25 · 351 阅读 · 0 评论 -
LeetCode-day34-最小栈-数据栈+辅助栈-cpp
LeetCode-day34-最小栈-数据栈+辅助栈-cpp题目回顾题解cpp代码1题目回顾传送门设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new...原创 2019-06-12 23:12:35 · 236 阅读 · 0 评论 -
LeetCode-day36-交叉链表-cpp
LeetCode-day36-交叉链表-cpp题目回顾题解cpp代码题目回顾传送门编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of ...原创 2019-06-15 09:12:48 · 176 阅读 · 0 评论 -
LeetCode-day25-环形链表-哈希表
@[TOC](LeetCode-141. 环形链表)题目回顾传送门给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。**说明:**解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]题解参考题解...原创 2019-06-03 23:13:55 · 175 阅读 · 0 评论 -
LeetCode-day41-557反转字符串中的单词III-双指针-easy-cpp
LeetCode-day41-557反转字符串中的单词III-双指针-easy-cpp题目回顾题解cpp题目回顾传送门给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格...原创 2019-06-20 11:43:07 · 278 阅读 · 0 评论 -
LeetCode-day46-二查搜索树第K小的元素-cpp
LeetCode-day46-二查搜索树第K小的元素-cpp题目回顾题解cpp题目回顾传送门给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出...原创 2019-06-29 12:02:15 · 119 阅读 · 0 评论 -
LeetCode-215数组中的第K个最大元素-快排-cpp
LeetCode-day45-数组中的第K个最大元素-快排-cpp题目回顾题解cpp题目回顾传送门在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4...原创 2019-06-29 10:53:12 · 151 阅读 · 0 评论 -
LeetCode--238除自身以外数组的乘积-左累乘右累乘-cpp
LeetCode-day44-238除自身以外数组的乘积-左累乘右累乘-cpp题目回顾题解cpp题目回顾传送门给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O...原创 2019-06-28 20:37:32 · 198 阅读 · 0 评论 -
LeetCode-day43-236二叉树的最近公共祖先-递归-cpp
LeetCode-day43-236二叉树的最近公共祖先-递归-cpp题目回顾题解cpp题目回顾传送门给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3...原创 2019-06-23 16:53:16 · 155 阅读 · 0 评论 -
LeetCode-day42-235二叉搜索树的最近公共祖先-cpp
LeetCode-day42-235二叉搜索树的最近公共祖先-cpp题目回顾题解cppcpp 2题目回顾传送门给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: r...原创 2019-06-23 16:54:02 · 191 阅读 · 0 评论 -
LeetCode-day33-2的幂-位运算-cpp
LeetCode-day33-2的幂-位运算-cpp题目回顾题解cpp代码1cpp代码2题目回顾传送门给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false题解参考题解时间复杂度: O(log2n)...原创 2019-06-12 08:03:17 · 149 阅读 · 0 评论 -
LeetCode-day32-求众数-摩尔投票法-cpp
LeetCode-day32-求众数-摩尔投票法-cpp题目回顾题解cpp代码题目回顾传送门给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2题解参考题解和题解2时间复杂度...原创 2019-06-11 23:10:28 · 162 阅读 · 0 评论 -
LeetCode-day38-Nim游戏-推理-cpp
LeetCode-day38-Nim游戏-推理-cpp题目回顾题解cpp sort题目回顾传送门你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果...原创 2019-06-17 11:21:49 · 131 阅读 · 0 评论 -
LeetCode-day26-格雷编码-py
LeetCode-day26-格雷编码-py题目回顾题解py代码题目回顾传送门格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列...原创 2019-06-04 22:57:19 · 164 阅读 · 0 评论 -
LeetCode-day37-重复数字-1sort-2map-cpp
LeetCode-day37-重复数字-1sort-2map-cpp题目回顾题解cpp sortcpp map题目回顾传送门给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例...原创 2019-06-16 10:34:00 · 146 阅读 · 0 评论 -
LeetCode-螺旋矩阵 II-模拟过程-py
LeetCode-螺旋矩阵 II-模拟过程-py题目回顾题解python代码实现题目回顾传送门给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]题解同螺旋矩阵一类似,参考题解,方法一模拟过程时间复杂度是 O(n2)O(...原创 2019-05-29 10:00:02 · 230 阅读 · 0 评论 -
LeetCode-day27-二叉树的最大深度-深度优先搜索-c++
LeetCode-day27-二叉树的最大深度-深度优先搜索-c++题目回顾题解cpp代码题目回顾传送门给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它...原创 2019-06-05 23:17:06 · 338 阅读 · 0 评论 -
LeetCode-只出现一次的数字-链表-py
LeetCode-只出现一次的数字-链表-py题目回顾题解python 实现题目回顾传送门给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->...原创 2019-05-31 18:59:45 · 249 阅读 · 0 评论 -
LeetCode-全排列-回溯
LeetCode-全排列-回溯题目回顾题解python代码实现题目回顾传送门给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]题解参考官方题解时间复杂度是 O(∑k=1NP(N,k))O(\sum_{k=...原创 2019-05-24 16:13:38 · 565 阅读 · 0 评论 -
LeetCode-寻找两个有序数组的中位数
LeetCode-寻找两个有序数组的中位数题目回顾题解cpp 代码实现题目回顾传送门给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 ...原创 2019-05-11 13:37:32 · 145 阅读 · 0 评论 -
LeetCode-最大子序和-dp
LeetCode-53. 最大子序和题目回顾题解python代码实现题目回顾传送门给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题解参考题解时间复杂度是 O(n)O(n)O(n),空间复...原创 2019-05-21 08:15:56 · 83 阅读 · 0 评论 -
LeetCode-两数相加
LeetCode-两数相加题目回顾题解cpp 代码实现python 代码实现题目回顾给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> ...原创 2019-05-10 13:39:17 · 104 阅读 · 0 评论 -
LeetCode-回文数
LeetCode-回文数题目回顾题解py 代码1实现py 代码2题目回顾传送门判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出:...原创 2019-05-15 13:44:52 · 89 阅读 · 0 评论 -
LeetCode-合并两个有序链表21
LeetCode-合并两个有序链表题目回顾题解py 代码实现题目回顾传送门将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解参考题解时间复杂度是 O(m+n)O(m+n)O(m+n)空间复杂度O...原创 2019-05-20 08:09:15 · 89 阅读 · 0 评论 -
LeetCode-字符串转换整数 (atoi)
@TOC题目回顾传送门给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,231−1][−2^{31}, 2^{31} − 1][−231,23...原创 2019-05-14 17:51:45 · 75 阅读 · 0 评论 -
LeetCode-整数反转
LeetCode-整数反转题目回顾题解cpp 代码实现题目回顾传送门给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21**注意:**假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,231−1][−2^...原创 2019-05-13 18:54:11 · 93 阅读 · 0 评论 -
洛谷 p1908 逆序对 归并排序
题目描述猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。Update:数据已加强。输入输...原创 2019-02-04 18:57:21 · 720 阅读 · 0 评论 -
LeetCode-盛最多水的容器
LeetCode-盛最多水的容器题目回顾题解python 代码实现题目回顾传送门给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。**说明:**你不能倾斜容器,且 n 的值至少为 2。图中垂直...原创 2019-05-16 13:55:02 · 87 阅读 · 0 评论 -
LeetCode-搜索旋转排序数组-二分-递归
LeetCode-搜索旋转排序数组题目回顾题解python代码实现题目回顾传送门假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n)...原创 2019-05-25 15:51:12 · 137 阅读 · 0 评论 -
LeetCode-最长回文子串
LeetCode-最长回文子串题目回顾题解cpp 代码实现题目回顾传送门给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"题解参考动态规划[题解]时间复杂度是 O(n2)O(n^2)O(n2)执...原创 2019-05-12 16:18:05 · 124 阅读 · 0 评论 -
LeetCode-螺旋矩阵-模拟
LeetCode-螺旋矩阵-模拟题目回顾题解python代码实现题目回顾传送门给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4...原创 2019-05-28 11:06:29 · 110 阅读 · 0 评论