昨天面试遇到的题目:
给定一个整数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 3
<?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
zqhong 2015-04-11 09:36:54 +08:00
@Puteulanus 小白有个疑问,函数bulidArray里面的形参 offset 有什么作用?
|
7
Puteulanus 2015-04-11 13:07:59 +08:00 1
|
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 1
我也来一个
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 就是用的递归
|