LeetCode2320:统计放置房子的方式数

题目描述:一条街道上共有 n * 2 个地块 ,街道的两侧各有 n 个地块。每一边的地块都按从 1 到 n 编号。每个地块上都可以放置一所房子。现要求街道同一侧不能存在两所房子相邻的情况,请你计算并返回放置房屋的方式数目。由于答案可能很大,需要对 109 + 7 取余后再返回。 方法1:动态规划dp


LeetCode740:删除并获得点数

题目描述:给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 方


LeetCode213:打家劫舍Ⅱ

题目描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 方法1:动态规划,第一圈和最后一圈不能同时偷,


LeetCode118:杨辉三角

题目描述:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 方法1:动态规划 class Solution { public: vector<vector<int>> generate(int numRows)


LeetCode279:完全平方数

题目描述:给你一个整数 n ,返回和为 n 的完全平方数的最少数量 。 方法1:动态规划,dp[i] = min(dp[i],dp[i-x]+1);x是任意小于n的完全平方数 class Solution { public: int numSquares(int n) { v


LeetCode198:打家劫舍

题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算在不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。(不能同时闯入相邻的房间)


LeetCode322:零钱兑换

题目描述:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 方法1:递归,超时,INT_MAX表示最大的整数,不是MAX_INT class Solut


LeetCode70:爬楼梯

题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 方法1:递归,第一层是1,第二层是2,第三层是第一层加第二层,但是超时,无法通过所有案例 class Solution { public: int climbSta


LeetCode121:买卖股票的最佳时机

题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 方法1:暴力循环,时间复杂度过高,无法通过所有样例 class