问题:
- 有两个数组A、B,A = {‘a’=>2,’c’=>7,’g’=>10….}, B = {‘d’=>5,’a’=>’2’,’b’=>3,’c’=>7….}找出其中相同的元素。
- 二分查找。
- redis的数据类型
- mysql垂直分表,水平分表。
- redis、mongo、memcached的优缺点。
- 第K大的数。
解析:
- 遍历数组就好了。
二分查找如下:
1234567891011121314151617function binarySearch($arr,$target){$left = 0;$right = count($arr) - 1;$mid = 0;while($left < $right){$mid = $left + (($right - $left) >> 1);if($arr[$mid] > $target){$right = $mid;}else if($arr[$mid] < $target){$left = $mid;}else{return $arr[$mid]}}}redis数据类型:string,list,set,hash,sortset
- mysql 垂直与水平分表:
- 垂直分表:垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。通常按照以下原则:
- 不常用的字段单独放在一张表
- 把大字段单独拆分出来
- 经常组合查询的放在一张表
- 水平分表:水平拆分是指数据表行的拆分。可以把一个大表拆分成存储内容相同的许多小表。
- 垂直分表:垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。通常按照以下原则:
- redis,memcached,mongodb的优缺点。
- 博客中有对于第K大的数的求解方案。