962 次浏览
假设我们有一个二叉搜索树。我们必须找到该 BST 中第 K 小的元素。因此,如果树类似于 - 因此,如果我们想找到第 3 小的元素,则 k = 3,结果将为 7。要解决此问题,我们将遵循以下步骤 - 创建一个名为 nodes 的空列表调用 solve(root, nodes)返回 nodes 的第 k-1 个元素创建 solve 方法,它接受根和 nodes 数组,其工作原理如下 -如果 root 为空,则返回solve(root 的左子树, nodes)将 root 的值添加到 nodes 数组中solve(root 的右子树, nodes)让我们看看… 阅读更多
839 次浏览
假设我们有一个完全二叉树,我们必须计算节点的数量。因此,如果树类似于 - 那么输出将是 6。要解决此问题,我们将遵循以下步骤这将使用递归方法。此方法 countNodes() 采用根作为参数。hr := 0 和 hl := 0创建两个节点 l 和 r 作为根节点当 l 不为空时hl 加 1l := l 的左子树当 r 不为空时r := r 的右子树hr 加 1如果 hl = hr,则返回 (2 ^ hl) – 1返回 1 + countNodes(root 的左子树) + countNodes(root 的右子树) … 阅读更多
108 次浏览
假设我们必须生成所有可能的 k 个数字组合,这些数字加起来等于数字 n,前提是只能使用 1 到 9 的数字。每个组合都应该是一组唯一的数字。所有数字都应该是正数,并且解决方案不得包含重复的组合。因此,如果 k = 3 且 n = 9,则可能的组合为 [[1, 2, 6], [1, 3, 5], [2, 3, 4]]要解决此问题,我们将遵循以下步骤 - 假设我们将使用形成一个名为 solve 的方法来解决这个问题。这将是一个递归方法,它将采用… 阅读更多
2K+ 次浏览
假设我们有一个未排序的数组,我们必须从该数组中找到第 k 大的元素。因此,如果数组为 [3, 2, 1, 5, 6, 4] 且 k = 2,则结果将为 5。要解决此问题,我们将遵循以下步骤 - 我们将对元素进行排序,如果 k 为 1,则返回最后一个元素,否则返回 array[n – k],其中 n 是数组的大小。让我们看看下面的实现,以便更好地理解 - 示例实时演示类解决方案(对象): def findKthLargest(self, nums, k): nums.sort() if k ==1: … 阅读更多
714 次浏览
假设,你是一个职业抢劫犯。你计划抢劫一条街上的房屋。每栋房子都存有一定数量的钱。所有房屋都排列成一个圆圈。这意味着第一栋房子是最后一栋房子的邻居。我们必须记住,相邻的房屋连接着安全系统,如果在同一晚上闯入两栋相邻的房屋,它会自动联系警察。因此,如果我们有一个整数列表代表每栋房子的金额,请确定你可以获得的最大金额… 阅读更多
5K+ 次浏览
假设我们必须制作 Trie 结构,并具有三个基本操作,如 insert()、search()、startsWith() 方法。我们可以假设所有输入都是小写字母。例如,如果我们如下调用函数,我们将看到输出Trie trie = new Trie()trie.insert(“apple”)trie.search(“apple”) // 这将返回 truetrie.search(“app”) // 这将返回 falsetrie.startsWith(“app”) // 这将返回 truetrie.insert(“app”)trie.search(“app”) // 这将返回 true要解决此问题,我们将遵循以下步骤 - 最初创建一个名为 child 的字典。insert 方法将如下所示 - current := child对于 word 中的每个字母 l -如果 l 不存在于… 阅读更多
假设我们有一个网格,其中有一些 0 和一些 1。我们必须计算岛屿的数量。岛屿是指被水包围并通过水平或垂直连接相邻陆地而形成的地方。我们可以假设网格的所有四个边缘都被水包围。假设网格如下 -11000110000010000011有三个岛屿。要解决此问题,我们将遵循以下步骤 - 将有两种方法,一种用于计算岛屿数量,称为 numIslands() 和 makeWater()。makeWater() 将如下所示 -如果网格的行数为… 阅读更多
151 次浏览
假设我们有一棵二叉树,如果我们从右侧查看这棵树,那么我们可以看到它的一些元素。我们必须显示这些元素。因此,如果树类似于 - 要解决此问题,我们将遵循以下步骤 - 我们将为 dfs 创建一个辅助方法。这将需要 tree_node、一个用于保存答案的数组和 level。level 最初为 0。dfs 的工作原理如下 -如果节点为空,则返回如果 level = 答案数组的长度,则将节点的值插入到 ans 数组中dfs(节点的右子树, ans, level + … 阅读更多
假设我们想为二叉树制作一个迭代器。将有两种方法。next() 方法返回下一个元素,hasNext() 方法返回布尔值,这将指示下一个元素是否存在。因此,如果树类似于 - 并且函数调用的顺序为 [next(), next(), hasNext(), next(), hasNext(), next(), hasNext(), next(), hasNext()]。输出将为 [3, 7, true, 9, true, 15, true, 20, false]要解决此问题,我们将遵循以下步骤 - 有两种方法 next 和 hasNext,next() 方法将如下所示 - curr := 堆栈顶部… 阅读更多
355 次浏览
在本教程中,我们将讨论一个程序,用于查找 1 到 n 之间包含数字 4 的数字。为此,我们将提供一个数字 n。我们的任务是计算所有包含 4 作为其一位数字的数字并将其打印出来。示例实时演示#include using namespace std; bool has4(int x); // 返回给定数字中数字的总和 int get_4(int n){ int result = 0; // 计算每个数字的总和 for (int x=1; x