摘要:
一、题目 1、审题 2、分析 给出一个整形数组,判断是否能将其拆分成两个元素和相等的子数组。 二、解答 1、思路 ① 将数组所有元素求和得到 sum, 若 sum %2 == 1 ,则不可切分。 ② 将 sum 除以 2,即 sum /= 2; 则 问题变为:从 数组中取出若干个元素,使得其和为 s 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一棵二叉搜索树。将所有节点值加上比他大的所有节点值。 二、解答 思路: 采用类似中序(左-->根-->右)遍历的方式。实际采用 (右--> 根 --> 左)。遍历时,统计所有遍历的节点之和。 方法一、 采用一个 Stack 进行二叉树遍历。同时更新节点值。 方法二、 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一棵二叉树,求该二叉树中两个节点最远的距离。 二、解答 ① 采用全局变量 max 记录两个节点之间最远的距离 ② 分别计算 root.left 的深度,与 root.right 的深度。 最远距离即为 Max(left + right, max) 阅读全文
摘要:
一、题目 1、审题 2、分析 给定一个整形数组。若存在连续的序列相加和为 k ,统计这样的序列的个数。 二、解答 方法一、 时间复杂度: O(N^2),空间复杂度:O(1) ① 将所给数组 nums,连续元素相加。 nums[i] 代表下标 i 及i之前的元素之和。 ② 采用 count 记录满足的 阅读全文
摘要:
一、题目 1、审题 2、分析 给定一个无序整形数组,将其变为有序,最少要将连续的多少个元素进行排序。 二、解答 1、思路 ① 采用两个指针。 begin 记录需要排序的元素的最低下标; end 记录需要排序的元素的最高下标。 ② 顺序遍历数组, 采用变量 max,记录到当前元素为止的最大元素值,若当 阅读全文
摘要:
一、题目 1、审题 2、分析 将两个二叉树合并为一棵(对应的节点值相加)。 二、解答 方法一、 将 t1 作为目标二叉树, ① 若 t1 与 t2 均不为空, 则 t1 值为 t1 与 t2 值之和。递归计算 t1 左右孩子 ② 若 t1 为空,则返回 t2 ③ 若 t2 为空,则返回 t1 方法二 阅读全文
摘要:
一、题目 1、审题 2、分析 输入为任务数组,且相同的任务只有在距离 n 之后才能,才能再做。求最少处理时间。 二、解答 ① 首先统计出数组中,出现字符最多的次数 max, 出现次数最多的字符有几种 maxCount; ② 将出现次数最多的字符作为批次的划分,共有 max - 1 批空槽等待填写任务 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个字符串。求其切割的子串中,有多少个回文子串。 二、解答 ① 从第一个字符依次向前遍历。 ② 分为奇数和偶数个字符进行回文判断的情况。 若为奇数个字符,采用指针left、right 指向当前字符。且left 向左移动同时 right 向右移动。每一栋一步进行判断。 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个记录温度的数组。输出当前温度距离下一次升温的下标距离。 二、解答 方法一、 采用一个 dp 数组,从后往前填值。(i < j) 若 dp[i] < dp[j], 则 dp[i] = j - i; 若 dp[i[ >= dp[j] 则 j = j + dp[j] 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个二维数组,给出两个坐标。求这两个坐标之间的所有元素的和。 二、解答 1、思路 ①、 新建一个数组 sums[rows + 1][cols + 1],其中元素 sums[i+1][j+1] 用于储存 matrix 中从 [0, 0] 到 [i][j] 之间的元素和 阅读全文