Leetcode基础刷题之PHP解析(二分查找之33,35)

利用二分查找,定义两个下标,初始的时候一个指向数组开始位置一个指向数组最后位置,每次取数组中间,等于直接返回下标,如果中间数小于给定值,那么就把范围缩小成中间数之后的位置,否则把范围缩小成中间数之前的位置。这里中间数为了防止数值过大可以使用位运算来求。...

Leetcode PHP题解--D54 937. Reorder Log Files

D54 937. Reorder Log Files 题目链接 937. Reorder Log Files 题目分析 给定一个数组,每一个元素是一条“日志”。 每一条日志的第一个部分为一个标识符(ID)。 剩余部分为: 全为小写字母的字符串(称为字符日志) 或 全为数字的字符串(称为数字日志)。 给定的数组中确定会至少有一个字母。 重新排序这个数组,使得字符日志在前、数字日志在后。 并...

Leetcode PHP题解--D52 496. Next Greater Element I

D52 496. Next Greater Element I 题目链接 496. Next Greater Element I 题目分析 给定两个数组,其内元素不重复。 数组1是数组2的子集,返回每个在数组1中的元素在数组2对应位置以右最大的元素。 思路 只能逐个遍历吧。 最终代码 ...

Leetcode基础刷题之PHP解析( 98. Validate Binary Search Tree)

思路有两种,二叉查找树的特点就是左子树上的结点都小于根结点,右子树上的结点都大于根节点。所以有两个方向,可以分别递归的判断左子树,右子树。或者拿左子树上的最大值,右子树上的最小值分别对应根结点进行判断。...

Leetcode基础刷题之PHP解析( 144. 145)

前序遍历,先访问根结点,然后在访问左子树,最后访问右子树。可以利用栈的特点,这里我结合了队列和栈的特点来实现。先压入树,取出根节点。先把根节点值push到队列中,然后把右子树压入栈中,最后压入左子树。返回队列。当然你可以调整成你想要的实现方式。...