
昨天面试遇到的题目:
给定一个整数n,生成一个形如[1,[2,[3,[n,"$$$$..."]]]]的数组。例如:n=4,生成[1,[2,[3,[4,"$$$$"]]]]。各位大神,请各显神通。
我的答案:
<?php
function bulidArray($length, $offset = 1) {
return [$offset, ($offset < $length) ? bulidArray($length, $offset + 1) : str_repeat('$', $offset)];
}
1 Valyrian 2015-04-10 23:59:03 +08:00 via iPhone def f(m): def g(n, i): if i>n: return "$$$$" else: return [i, g(n,i+)] return g(m, 1) |
2 Puteulanus 2015-04-11 01:11:41 +08:00 <?php function bulidArray($length,$offset = 1){ $array = array($length,str_repeat('$',--$length + $offset)); while($length) $array = array($length--,$array); return $array; } 还在学,写的不好。。 |
3 jiang42 2015-04-11 04:33:21 +08:00 @Valyrian 你题目没看清吧。。。然后倒数第二行似乎有点问题。。。 写一个迭代的 ptr = res = [] for i in range(1, n+1): ptr.append([i]) ptr = ptr[-1] ptr.append('$'*n) 要的结果在res里 |
4 savebox 2015-04-11 07:56:32 +08:00 写个reduce实现的: def r(n):return reduce(lambda x,y:[y]+[x],(range(1,n+1)+['$'*n])[::-1]) |
5 laoyuan 2015-04-11 09:12:03 +08:00 递归0分,哈哈 function ba($n) { $a = array(1, str_repeat('$', $n)); for($i = $n; $i > 1; $i --) { $a[1] = array($i, $a[1]); } return $a; } |
6 cha1 2015-04-11 09:36:54 +08:0 @Puteulanus 小白有个疑问,函数bulidArray里面的形参 offset 有什么作用? |
7 Puteulanus 2015-04-11 13:07:59 +08:00 |
8 gaocegege 2015-04-11 13:17:20 +08:00 好像函数式里面的List定义。。。 |
9 Bruta 2015-04-11 13:58:47 +08:00 |
10 retanoj 2015-04-11 14:53:19 +08:00 我也来一个 def p(n): reduce(lambda x,y:[y]+[x], range(n,0,-1), '$'*n) |
11 clippit 2015-04-11 15:25:41 +08:00 function build(length) { var arr = [length, (new Array(length + 1)).join('$')]; for (var i = length - 1; i > 0; i--) { arr = [i, arr]; } return arr; } JSON.stringify(build(5)) "[1,[2,[3,[4,[5,"$$$$$"]]]]]" |
12 Galvin 2015-04-11 15:37:09 +08:00 其实我觉得楼主的就已经挺好的了= = 简洁明了 |
13 yuankui 2015-04-11 19:52:43 +08:00 递归不是很容易实现?? |
14 Sunyanzi 2015-04-12 10:43:53 +08:00 这么简单的需求还用啥递归 ... 直接用循环就够了 ... $n = 4; for ( $arr = [], $i = 0, $tar = &$arr; $i < $n; $tar = &$tar[1] ) $tar = [ ++ $i, null ]; $arr && $tar = str_repeat( '$', $i ); 如果 $n > 0 那么返回需要的数据 ... 如果 $n < 1 返回空数组 ... |
15 LeopardDennis OP @yuankui 就是用的递归 |