摘要:
代码: 输出: 封装成一个方法: 阅读全文
摘要:
Variable handling 函数: boolval — 获取变量的布尔值debug_zval_dump — 将内部zend值的字符串表示转储为输出doubleval — floatval 的别名empty — 检查一个变量是否为空floatval — 获取变量的浮点值get_defined_ 阅读全文
摘要:
将数组中的奇数和偶数分开,使用『两根指针』的方法最为自然,奇数在前,偶数在后,若不然则交换之。 JAVA: 源码分析 注意处理好边界即循环时保证left < right. 复杂度分析 遍历一次数组,时间复杂度为 O(n), 使用了两根指针,空间复杂度 O(1). 阅读全文
摘要:
寻找未排序数组的中位数,简单粗暴的方法是先排序后输出中位数索引处的数,但是基于比较的排序算法的时间复杂度为 O(nlogn), 不符合题目要求。线性时间复杂度的排序算法常见有计数排序、桶排序和基数排序,这三种排序方法的空间复杂度均较高,且依赖于输入数据特征(数据分布在有限的区间内),用在这里并不是比 阅读全文
摘要:
此题要求返回新数组。由于可以生成新数组,故使用常规思路按顺序遍历即可。 C++: JAVA: 源码分析 分三步走,后面分别单独处理剩余的元素。 复杂度分析 遍历 A, B 数组各一次,时间复杂度 O(n), 空间复杂度 O(1). Challenge 两个倒排列表,一个特别大,一个特别小,如何 Me 阅读全文
摘要:
因为本题有 in-place 的限制,故必须从数组末尾的两个元素开始比较;否则就会产生挪动,一旦挪动就会是 O(n^2) 的。自尾部向首部逐个比较两个数组内的元素,取较大的置于数组 A 中。由于 A 的容量较 B 大,故最后 m == 0 或者 n == 0 时仅需处理 B 中的元素,因为 A 中的 阅读全文
摘要:
在上题基础上加了限制条件元素最多可重复出现两次。~~因此可以在原题的基础上添加一变量跟踪元素重复出现的次数,小于指定值时执行赋值操作。但是需要注意的是重复出现次数occurence的初始值(从1开始,而不是0)和reset的时机。~~这种方法比较复杂,核心思想仍然是两根指针,只不过此时新索引自增的条 阅读全文
摘要:
foreach ($arr as &$value) 看到一个有意思的东西: 运行结果: 当使用了 & 引用后,下一次遍历数组的结果发生了变化 调试下看看: 运行结果(可以看到,第二次循环里面,每次循环后,最后一个数组元素一直被引用着,而且等于当时数组遍历的值): 因为使用了 & 后,会影响后 阅读全文