
leetcode
qq_14962179
这个作者很懒,什么都没留下…
展开
-
leetcode124.二叉树中的最大路径和
题目:给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例:思路:post-order-traversal(后序遍历)变形题,left最大路径和right最大路径后更新最终结果的状态。采用递归,每遍历一个节点,判断左子树和右子树的值,如果子树的值大于0,则加上子树的值,同时利用全局变...原创 2019-05-13 09:31:34 · 289 阅读 · 0 评论 -
leetcode64.最小路径和
题目:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路:代码:...原创 2019-01-15 20:45:30 · 115 阅读 · 0 评论 -
leetcode120.三角形最小路径和
题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。示例:例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。思路:代码:...原创 2019-01-15 20:43:44 · 191 阅读 · 0 评论 -
leetcode70.爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例:示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 +...原创 2019-01-15 20:35:54 · 161 阅读 · 0 评论 -
leetcode45.跳跃游戏 II
1.题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。2.示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。3.思路:倒推动态规划4.代码:a...原创 2019-01-09 10:00:32 · 98 阅读 · 0 评论 -
leetcode45.跳跃游戏 II
1.题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。2.示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。3.思路:倒推动态规划4.代码:a...原创 2019-01-09 10:00:32 · 126 阅读 · 0 评论 -
leetcode401.二进制手表
题目:二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。示例:输入: n = 1返回: [“1:00”, “2:00”, “4:00”, “8:00”, “0:01”...原创 2019-01-14 15:42:44 · 148 阅读 · 0 评论 -
leetcode90.子集 II
题目:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]思路:代码:...原创 2019-01-14 15:39:06 · 235 阅读 · 0 评论 -
leetcode78.子集
题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路:代码:...原创 2019-01-14 15:37:23 · 98 阅读 · 0 评论 -
leetcode216.组合总和 III
题目:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例:示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]思路:代码:...原创 2019-01-14 15:35:07 · 167 阅读 · 0 评论 -
leetcode40.组合总和 II
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例:示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求...原创 2019-01-14 15:33:10 · 191 阅读 · 0 评论 -
leetcode343.整数拆分
题目:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例:示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。思路:代码:递...原创 2019-01-15 21:30:17 · 221 阅读 · 0 评论 -
leetcode279.完全平方数
题目:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例:示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路:代码:...原创 2019-01-15 21:32:33 · 261 阅读 · 0 评论 -
leetcode91.解码方法
题目:一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例:示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26)...原创 2019-01-15 21:34:14 · 293 阅读 · 0 评论 -
leetcode85. 最大矩形
示例:思路:动态规划https://blog.youkuaiyun.com/maxiaotiaoti/article/details/62230381定义概念,初始化边界,一般递推cur_left当前元素可以延伸到最左边元素的下标。当元素为0时,cur_left取0。cur_right为当前元素可以延伸到最右边元素的下标加1.当前元素为1时,cur_right取n数组长度。总结:cur_lef...原创 2019-02-27 14:01:36 · 325 阅读 · 0 评论 -
网易2018语音算法笔试编程1
题目:小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]…, A[N]}。牛博士给小易出了一个难题:对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。输入描述:输入的第一行为数列的个数t(1 ≤ t ≤ 10),接下来每两行描述一个数列A...原创 2019-02-19 22:14:00 · 433 阅读 · 0 评论 -
给出n, m, 有两种操作,n 减一 和 n 乘以 2,问最少要多少次操作才能把n 变成 m。
https://blog.youkuaiyun.com/castledrv/article/details/45305577思路:n>m,最优方法是一直减1,返回n-m;n<m分组讨论:1.m为奇数,让m+1然后除以2;2.当m为偶数,直接除以2...原创 2019-02-28 21:42:59 · 3226 阅读 · 0 评论 -
leetcode4.寻找两个有序数组的中位数
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例:示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则...原创 2019-02-23 16:30:58 · 132 阅读 · 0 评论 -
leetcode309.最佳买卖股票时机含冷冻期
题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖...原创 2019-01-16 22:00:39 · 358 阅读 · 0 评论 -
leetcode337.打家劫舍 III
题目:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例:示例1:示例2...原创 2019-01-16 21:57:53 · 204 阅读 · 0 评论 -
leetcode213.打家劫舍 II
题目:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例:示例 1:输入: [2,3,2]输出: ...原创 2019-01-16 21:55:16 · 98 阅读 · 0 评论 -
leetcode198.打家劫舍,动态规划
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例:示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1)...原创 2019-01-16 21:50:34 · 160 阅读 · 0 评论 -
leetcode63.不同路径 II
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例:示例 1:输入:[[...原创 2019-01-15 21:39:40 · 284 阅读 · 0 评论 -
leetcode62.不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例:示例 1:输入: m = 3, n = 2输出: 3解释:...原创 2019-01-15 21:37:13 · 117 阅读 · 0 评论 -
leetcode39.组合总和
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例:示例 1:输入: candidates = [2,3,6,7], target = 7,所求解...原创 2019-01-14 15:30:22 · 290 阅读 · 0 评论 -
leetcode77.组合
题目:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]思路:回溯思想解决组合问题代码:回溯法:class Solution {public: vector<vector<int>>...原创 2019-01-14 15:22:27 · 144 阅读 · 0 评论 -
leetcode47.全排列 II
排列除了回溯还有更好的解决方法题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]思路:代码:...原创 2019-01-14 14:38:42 · 201 阅读 · 0 评论 -
leetcode67.二进制求和
1.题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。2.示例:示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”3.思路:不建议转十进制数字求和再转为二进制,会超时。二进制求和,从右向左开始计算4.代码:string...转载 2019-01-01 21:21:00 · 97 阅读 · 0 评论 -
leetcode27.移除元素
1.题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。2.示例:示例1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,1,2,2,3,0,4,2], val = 2,函...原创 2019-01-01 17:07:30 · 102 阅读 · 0 评论 -
leetcode35.搜索插入位置
1.题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。2.示例:示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出:...原创 2019-01-05 17:40:16 · 149 阅读 · 1 评论 -
leetcode111.二叉树的最小深度
1.题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。2.示例:3.思路:利用递归实现,当前节点的左右节点都为NULL时判断当前节点为子节点。4.代码:int minDepth(TreeNode* root) { ...原创 2019-01-05 10:09:32 · 119 阅读 · 0 评论 -
leetcode104.二叉树的最大深度
1.题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。2.示例:3.思路:递归二叉树的高度等于左子树和右子树高度的较大值加1.4.代码:int maxDepth(TreeNode* root) { if(root...原创 2019-01-04 22:33:32 · 164 阅读 · 0 评论 -
leetcode100.相同的树
1.题目:判断两棵二叉树是不是相同的,给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。2.示例:3.思路:有关二叉树的问题大部分可以使用递归来求解。4.代码:bool isSameTree(TreeNode* p, TreeNode* q) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am原创 2019-01-04 21:35:30 · 160 阅读 · 0 评论 -
leetcode101.对称二叉树
1.题目:[判断一棵二叉树是不是左右对称的]给定一个二叉树,检查它是否是镜像对称的。2.示例:例如,二叉树 [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 33.思路:递归判断。4.代码:bool isSymm...原创 2019-01-04 21:12:27 · 132 阅读 · 0 评论 -
leetcode88.合并两个有序数组
1.题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。2.示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2...原创 2019-01-04 20:47:39 · 119 阅读 · 0 评论 -
leetcode7.整数反转
1.题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。2.示例:示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 213.思路:注意反转后溢出问题。4.代码:int reverse(int x) { int res=0; while(x!=0){...原创 2019-01-04 11:11:38 · 101 阅读 · 0 评论 -
leetcode19.删除链表的倒数第N个节点
1.题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。2.示例:示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.3.思路:设置前后指针,前指针先走n步,然后一起走,前面指针到链表尾部,后面指针到要删除的节点。4.代码:ListNode* r...原创 2019-01-04 10:32:54 · 87 阅读 · 0 评论 -
leetcode21.合并两个有序链表
1.题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。2.示例:输入:1-&amp;gt;2-&amp;gt;4, 1-&amp;gt;3-&amp;gt;4输出:1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;43.思路:遍历两个链表,每次取原创 2019-01-01 22:03:50 · 130 阅读 · 0 评论 -
leetcode83.删除排序链表中的重复元素
1.题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。2.示例:示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->33.思路:遍历链表,跳过重复节点。4.代码:代码1:存储节点的值比较,释放重复节点内存ListNode* deleteDup...原创 2019-01-02 09:44:53 · 208 阅读 · 0 评论 -
leetcode34.在排序数组中查找元素的第一个和最后一个位置
1.题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。2.示例:示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8...原创 2019-01-06 14:30:16 · 154 阅读 · 0 评论