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


LeetCode20:有效的括号

题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 方法1:使用栈后进先出的特点,满足括号匹配的顺序 clas


LeetCode198:打家劫舍

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


LeetCode322:零钱兑换

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


LeetCode70:爬楼梯

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


LeetCode56:合并区间

题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] ,合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 方法1:按左端点排序后再合并 intervals[i] [0] <= in


LeetCode121:买卖股票的最佳时机

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


LeetCode53:最大子数组和

题目描述:一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 方法1:求得该数组的前缀和数组,题目就变成了买卖股票的最佳时机(前缀和数组类比为股票价格) 不断遍历数组计算前缀和。当前的前缀和(卖出价格)减去之前的前缀和的最小值(买入价格),就得到了


LeetCode138:随机链表的复制

题目描述:长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点,构造这个链表的深拷贝。深拷贝应该正好由 n 个全新节点成,其中每个新节点的值都设为其对应的原节点的值,复制链表中的指针都不应指向原链表中的节点 。 难点:遍历无法构造random