随笔分类 - 算法
牛客网算法
摘要:JZ68二叉搜索树的最近公共祖先 描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先. 2.二
阅读全文
摘要:JZ66构建乘积数组 描述 给定一个数组 A[0,1,...,n-1] ,请构建一个数组 B[0,1,...,n-1] ,其中 B 的元素 B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1](除 A[i] 以外的全部元素的的乘积)。程序中不能使用除法。(注意:规定
阅读全文
摘要:JZ65不用加减乘除做加法 描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 数据范围:两个数都满足 -10 \le n \le 1000−10≤n≤1000 进阶:空间复杂度 O(1)O(1),时间复杂度 O(1)O(1) 方法一:位运算非递归(推荐使用) 思路
阅读全文
摘要:买卖股票的最好时机(一) 描述 假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益 1.你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天 2.如果不
阅读全文
摘要:JZ61 扑克牌顺子 描述 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。 有如下规则: 1. A为1,J为11,Q为12,K为13,A不能视为14 2. 大、小王为 0,0可以看作任意牌 3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出f
阅读全文
摘要:JZ55 二叉树的深度 描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。 方法1 递归 思路: 最大深度是所有叶子节点的深度的最大值,深度是指树的根节点到任一叶子节点路径上节点的数量,因此从根节点每
阅读全文
摘要:数字在升序数组中出现的次数 描述 给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数 解析 排序数组的查找问题首先考虑二分法 使用二分法找到左右边界的位置,然后长度一减即可 解题思路: 排序数组的查找问题首先考虑使用 二分法 解决,其可将 遍历法 的 线性级别
阅读全文
摘要:笔记1 用两个栈实现队列 1、进栈时候进入第一个栈内 2、出栈时将栈1的内容再次压入栈2中,即正向 3、如果栈2没有元素,弹栈需要栈1进栈 4、如果栈2有元素,即上一次进栈元素没有全部弹栈,直接弹栈 package esay.jz9用两个栈实现队列; import java.util.Stack
阅读全文