在迭代方法中,我们必须创建两个队列,一个队列保存左子节点值,另一个队列保存右子节点值。如果树为空,则它相对于穿过其根节点的垂直轴是对称的。否则,检查两个子树的根节点的值是否相同。如果是,则检查左子树和右子树是否对称。将左子节点值和右子节点值入队到队列 1,并将右子节点值和左子节点值入队到队列 1示例public class TreesPgm{ public ... 阅读更多
CoinChangeBottomUpApproach 接收 3 个参数作为输入,n 是金额,coins 数组包含硬币的总数,t 包含硬币的总数。声明一个动态数组,存储先前计算的值。循环遍历数组并计算计算金额所需的最小硬币数。如果已完成计算,则从动态数组中获取值。时间复杂度 - O(N)空间复杂度 - O(N)示例public class DynamicProgramming{ public int CoinChangeBottomUpApproach(int n, int[] coins, int t){ int[] dp = new int[100]; for (int i = 1; i < n; i++){ ... 阅读更多
MinimumStepstoOneBottomdownApproach 接收整数 n 作为输入。参数 n 包含元素的总数。初始条件检查 n 是否等于 1。如果 n 等于 1,则返回 0。将 op1、op2 和 op3 初始化为最大值。如果 n mod 3 等于 0,则递归调用 MinimumStepstoOneBottomdownApproach 并将其分配给 op1,如果 n mod 3 等于 0,则递归调用 MinimumStepstoOneBottomdownApproach 并将其分配给 op2,否则将 n 减 1 并调用 MinimumStepstoOneBottomdownApproach。最后从 dp 数组返回该值时间复杂度 - O(N)空间复杂度 - O(N)示例public class DynamicProgramming{ public int ... 阅读更多
MinimumStepstoOneTopdownApproach 接收整数 n 和一个整数数组作为输入。参数 n 包含元素的总数。初始条件检查 n 是否等于 1。如果 n 等于 1,则返回 0。将 op1、op2 和 op3 初始化为最大值。如果 n mod 3 等于 0,则递归调用 MinimumStepstoOneTopdownApproach 并将其分配给 op1,如果 n mod 3 等于 0,则递归调用 MinimumStepstoOneTopdownApproach 并将其分配给 op2,否则将 n 减 1 并调用 MinimumStepstoOneTopdownApproach。最后调用 Math.Min 计算三个元素的最小值 ... 阅读更多
斐波那契数列是一组数字,以 1 或 0 开头,然后是 1,并根据以下规则进行:每个数字(称为斐波那契数)等于前两个数字之和。自底向上方法首先专注于解决基础级别的较小问题,然后将其集成到完整和完整的解决方案中。时间复杂度 - O(N)空间复杂度 - O(N)示例public class DynamicProgramming{ public int fibonacciBottomupApproach(int n){ int[] dpArr = new int[150]; dpArr[1] = 1; for (int i = 2; i
斐波那契数列是一组数字,以 1 或 0 开头,然后是 1,并根据以下规则进行:每个数字(称为斐波那契数)等于前两个数字之和。自顶向下方法专注于将一个大问题分解成更小、更容易理解的块。空间复杂度为 O(N),因为我们创建了一个额外的数组内存,其大小等于数字的大小。时间复杂度 - O(N)空间复杂度 - O(N)示例public class DynamicProgramming{ public int fibonacciTopdownApproach(int n, int[] dpArr ){ if(n==0 || n ... 阅读更多