Leetcode
Oct11_F
曾因酒醉鞭名马,生怕情多累美人。
展开
-
c++之isxx库函数
isalnum(char c)函数,判断字符是否是数字或者字母,返回非零(true)、零(false)。参考link该函数在leetcode125 判断回文串的时候特别好用,具体如下,感谢哥们的题解:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a can...原创 2019-11-14 22:30:06 · 834 阅读 · 0 评论 -
LeetCode322 零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每...原创 2019-11-12 14:18:58 · 102 阅读 · 0 评论 -
LeetCode50 Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有...原创 2019-11-08 16:20:34 · 89 阅读 · 0 评论 -
LeetCode739 每日温度
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的...原创 2019-11-07 16:53:49 · 128 阅读 · 0 评论 -
LeetCode1 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solut...原创 2019-11-06 21:11:38 · 579 阅读 · 0 评论 -
LeetCode239 滑动窗口的最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 ...原创 2019-11-06 20:45:31 · 110 阅读 · 0 评论 -
LeetCode260 只出现一次的数字2
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?//位运算class Solution {public: v...原创 2019-11-06 15:40:46 · 114 阅读 · 0 评论 -
LeetCode300 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?class Solut...原创 2019-11-04 10:36:10 · 152 阅读 · 1 评论 -
0-1背包问题
问题:假设有一个容量为C的背包和n中不同的物品,每件物品重量为w(i)、价值v(i);现要在不超过背包容量的基础上,使得物品的总价值最大。==状态F(n,C):==考虑将n个物品放进容量为C的背包,使得价值最大。对第i件物品:***F(i,c) = max( F(i-1, c), v(i) + F(i-1, c-w[i]) )***本例中w = {1, 2, 3},对应v = {6, 10...原创 2019-11-03 22:37:26 · 282 阅读 · 0 评论 -
LeetCode64 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。//空间复杂度:O(1)class Solution {public: int minPathSum(v...原创 2019-11-03 16:39:27 · 139 阅读 · 1 评论 -
LeetCode120 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。//动态规化class Solution...原创 2019-11-03 15:57:34 · 94 阅读 · 0 评论 -
LeetCode70 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶...原创 2019-11-03 09:53:34 · 176 阅读 · 1 评论 -
LeetCode53 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。class Solution {public: int maxS...原创 2019-11-02 09:42:43 · 92 阅读 · 0 评论 -
LeetCode121 买卖股票最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是...原创 2019-11-02 09:19:16 · 92 阅读 · 0 评论 -
LeetCode236 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6...原创 2019-10-31 15:56:43 · 71 阅读 · 0 评论 -
LeetCode235 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2...原创 2019-10-31 09:27:23 · 94 阅读 · 0 评论 -
LeetCod96 不同的二叉搜索树
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树.//动态规划class Solution {public: int numTrees(int n) { vector<int> dp(n+1, 0); ...原创 2019-10-30 20:43:25 · 95 阅读 · 0 评论 -
LeetCode654 最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :输入:[3,2,1,6,0,5]输出:返回下面这棵树的根节点: 6/ \3 5\ /2 ...原创 2019-10-30 19:23:48 · 191 阅读 · 0 评论 -
LeetCode114 二叉树展开为链表
题目:link/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };...原创 2019-10-30 16:16:55 · 99 阅读 · 0 评论 -
LeetCode105 从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7/** * Definition for a binary tree node. * struct TreeNode...原创 2019-10-30 11:15:15 · 96 阅读 · 0 评论 -
LeetCode102 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。/** * Definition for a b...原创 2019-10-29 20:58:53 · 92 阅读 · 0 评论 -
LeetCode108 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 5/** * Definiti...原创 2019-10-29 20:24:56 · 88 阅读 · 0 评论 -
LeetCode104 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。/** * Definition for a binary tree node. * struct TreeNode {...原创 2019-10-29 16:40:36 · 171 阅读 · 0 评论 -
LeetCode617 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:Tree 1 Tree 21 2/ \ ...原创 2019-10-29 16:21:21 · 85 阅读 · 0 评论 -
LeetCode226 翻转二叉树
翻转一棵二叉树。示例:输入:4/ 2 7/ \ / 1 3 6 9输出:4/ 7 2/ \ / 9 6 3 1/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...原创 2019-10-29 10:36:14 · 72 阅读 · 0 评论 -
LeetCode25 K 个一组翻转链表
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...原创 2019-10-28 21:01:51 · 83 阅读 · 0 评论 -
LeetCode86分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5/** * Definition for singly-linked...原创 2019-10-28 19:47:17 · 123 阅读 · 0 评论 -
LeetCode92 反转链表2
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL/** * Definition for singly-linked list. * struct L...原创 2019-10-27 22:34:43 · 98 阅读 · 0 评论 -
LeetCode143 重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1-...原创 2019-10-27 21:51:14 · 96 阅读 · 0 评论 -
LeetCode237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:...原创 2019-10-27 20:42:00 · 110 阅读 · 0 评论 -
LeetCode24 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.定义4个指针/** * Definition for singly-linked list. * struct ListNode { * int va...原创 2019-10-27 20:20:21 · 280 阅读 · 0 评论 -
LeetCode19 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?双指针/** * Definition for singly-linked li...原创 2019-10-27 19:52:43 · 82 阅读 · 0 评论 -
LeetCode2 两数之和
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-10-25 21:06:14 · 233 阅读 · 0 评论 -
LeetCode203 移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNod...原创 2019-10-25 15:49:06 · 267 阅读 · 0 评论 -
LeetCode206 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?/** * Definition for singly-linked list. * struct ListNode { * int va...原创 2019-10-25 15:13:53 · 134 阅读 · 0 评论 -
LeetCode21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * int val; * ...原创 2019-10-25 15:10:34 · 148 阅读 · 0 评论 -
LeetCode200 岛屿数量
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3class Solution {public: ...原创 2019-10-14 21:30:05 · 81 阅读 · 0 评论 -
c++语法错误之control reaches end of non-void function[werror=return-type]
Leetcode 268 Missing Numberclass Solution {public: int missingNumber(vector<int>& nums) { sort( nums.begin(), nums.end() ); if( nums[nums.size()-1] != nums.siz...原创 2019-08-26 18:58:29 · 15977 阅读 · 0 评论 -
Leetcode121 Best Time to Buy and Sell Stock
描述:简单的说就是在给定的数组中找出最大差值,即最大的收益。在一段时间内最多只有一次买入和卖出,因为对应的另外一个题目是在一段时间内可以有多次买入和卖出。Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to comp...原创 2019-07-10 22:22:36 · 107 阅读 · 0 评论 -
Leetcode1 Two Sum
描述:给定一个数组,找出数组中两元素之和等于目标值,返回两数的索引。Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solut...原创 2019-06-24 22:04:19 · 107 阅读 · 0 评论