以下是 **10道高频算法面试题**,覆盖数组、链表、树、动态规划、贪心等核心考点,适合校招/社招算法面试准备:1. 给定一个整数数组 `nums` 和一个整数目标值 `target`,请你在该数组中找出 **和为目标值** 的那 **两个整数**,并返回它们的数组下标。(两数之和)2. 给你单链表的头节点 `head`,请你反转链表,并返回反转后的链表。(反转链表)3. 给你一个整数数组 `nums`,请你找出其中 **最长严格递增子序列** 的长度。(最长递增子序列)4. 给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串 `s`,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合;左括号必须以正确的顺序闭合。(有效的括号)5. 给定一个二叉树,返回其节点值的 **层序遍历**(即逐层地,从左到右访问所有节点)。(二叉树层序遍历)6. 给定 `n` 个非负整数 `a1,a2,...,an`,每个数代表坐标中的一个点 `(i, ai)`。在坐标内画 `n` 条垂直线,垂直线 `i` 的两个端点分别为 `(i, ai)` 和 `(i, 0)`。找出其中的两条线,使得它们与 `x` 轴共同构成的容器可以容纳最多的水。(盛最多水的容器)7. 给定一个数组 `nums`,编写一个函数将所有 `0` 移动到数组的末尾,同时保持非零元素的相对顺序。要求在原数组上操作,不能拷贝额外的数组。(移动零)8. 给定一个无重复元素的整数数组 `candidates` 和一个目标整数 `target`,找出 `candidates` 中可以使数字和为 `target` 的 **所有不同组合**,并以列表形式返回。`candidates` 中的数字可以无限制重复被选取。(组合总和)9. 给你一个整数数组 `prices`,其中 `prices[i]` 表示某支股票第 `i` 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 **最多** 只能持有 **一股** 股票。你也可以先购买,然后在同一天出售。返回你能获得的 **最大利润**。(买卖股票的最佳时机 II)10. 给你一个二叉树的根节点 `root`,判断其是否是一个 **有效的二叉搜索树**。有效二叉搜索树定义为:节点的左子树只包含小于当前节点的数;节点的右子树只包含大于当前节点的数;所有左子树和右子树自身必须也是二叉搜索树。(验证二叉搜索树)