摘要:
977、有序数组的平方 基本思想: 双指针法 左右指针 具体实现: 1、数组是有序的,但是负数平方后可能会变大 2、数组平方后的最大值在数组的最右端或者最左端 3、left指向数组起始位置,right指向数组终止位置 4、定义一个和原始数组一样大的新数组result 5、定义一个指针指向result 阅读全文
摘要:
27、移除元素 基本思想: 数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖 双指针法(快慢指针) 具体实现: 代码: class Solution { public int removeElement(int[] nums, int val) { int fastIndex 阅读全文
摘要:
看的代码随想录的解析 236、二叉树的最近公共祖先 基本思想: 自底向上查找,就可以找到公共祖先 回溯就是自底向上 后序遍历是天然的回溯过程,最先处理的一定是叶子节点 具体实现: 找到一个节点,左子树出现节点p,右子树出现节点q(反过来也行),那么该节点就是节点p和q的最近公共祖先。 递归三步: 1 阅读全文
摘要:
222.完全二叉树的节点个数 基本思想: 递归 具体实现: 普通二叉树求节点个数 1.递归参数以及返回值 参数:根节点 返回值:以该节点为根节点的二叉树的节点数量 2.递归终止条件 遍历到空节点的话,返回0,表明节点数为0 3.单层递归的逻辑 先求左子树节点数量,再求右子树节点数量,最后取总再加1( 阅读全文