刚打算入门学习算法,遇到一题发现 PHP 果然是最好的语音

2018-03-22 13:31:11 +08:00
 qxy

http://www.lintcode.com/en/problem/longest-words/

朋友推荐的网站,但是,只支持 C++,JAVA,PYTHON2/3,因为是刚入门,所以,找了一题应该最简单的。

然而,楼主用的 php,其他不会,所以,自己在本地写了一手。

此题给了提示:

 遍历两次的办法很容易想到,如果只遍历一次你有没有什么好办法?

但是,经我一想哪里需要两次循环。用我大 php 一次循环加个排序不就好了吗。 原数据:

Array
(
    [0] => dddd
    [1] => a
    [2] => eeeee
    [3] => ccc
    [4] => bb
)
最大数:eeeee

渣代码:

<?php

$a = [
    'dddd',
    'a',
    'eeeee',
    'ccc',
    'bb',
];

$arr = [];
foreach ($a as $k => $v) {
    $arr[strlen($v)] = $v;
}

echo '<pre>';
print_r($a);
krsort($arr);
print_r('最大数:' . current($arr));

一直听闻,php 对于数组的处理比其他语言要厉害。难道,果真如此,其他语言,对于这题有啥不同的解法,请赐教!

9257 次点击
所在节点    程序员
96 条回复
joeke
2018-03-22 17:37:13 +08:00
go 了解一下
CFMY
2018-03-22 18:03:31 +08:00
算法追求的是时间和空间的效率,不是代码好看简练哦
doraemon1293
2018-03-22 18:33:15 +08:00
随手一写竟然 timecost 排第一。。。。

class Solution:
"""
@param: dictionary: an array of strings
@return: an arraylist of strings
"""
def longestWords(self, dictionary):
# write your code here
ans=[]
longest=0
for word in dictionary:
if len(word)>longest:
ans=[word]
longest=len(word)
elif len(word)==longest:
ans.append(word)
return ans
cuebyte
2018-03-22 19:05:52 +08:00
樓主你還是不要當程序員了⋯⋯排序的時間複雜度是 NlogN,你當是免費的?
cuebyte
2018-03-22 19:07:15 +08:00
樓主你這是真的一粉頂十黑
zifuir
2018-03-22 19:54:17 +08:00
php 表示这锅他不背,太黑啦
gbin
2018-03-22 20:04:30 +08:00
🌚🌚这叫算法,PHP 都写好了兄弟咱俩有得一拼,有兴趣加我微信一起学?
limbo0
2018-03-22 20:09:33 +08:00
确实是最好的语音
cjyang1128
2018-03-22 20:23:07 +08:00
每过几天就能看到黑 PHP 新的黑法,真有意思
misaka19000
2018-03-22 20:26:36 +08:00
好吧 感觉楼主是个萌新各位也别太严格啦
不过楼主还是多学门语言吧,只会 PHP 确实是会出现这样的问题
gbin
2018-03-22 21:00:09 +08:00
右转 /go/algorithm,每天一个算法题,有兴趣加我微信一起学习 cGdiMTYzNDc5NTI2Mg== ( base64 )
lihongjie0209
2018-03-22 21:23:11 +08:00
每过几天就能看到黑 PHP 新的黑法,真有意思
roychan
2018-03-22 21:55:37 +08:00
max_len = max([len(x) for x in dictionary])
return [x for x in dictionary if len(x) == max_len]
...
sagaxu
2018-03-22 22:27:40 +08:00
val s = listOf("dddd", "a", "eeeee", "ccc", "bb")
s.maxBy { it.length }
wlwood
2018-03-22 23:04:11 +08:00
算法怎么能分语言呢?只要是图灵完备的语言,都可以图灵等价。这个语言假如说能做出复杂度为 o(n),那么其他语言也肯定能做到 o(n)。
Lz 难道又是想来让论坛沸腾起来的么?
mulog
2018-03-22 23:28:42 +08:00
不看楼主发帖记录我还真以为是来黑的。。
不知道说啥好。。。
HanSonJ
2018-03-22 23:48:29 +08:00
求你们了,别再来黑 PHP 了
ImJoeHs
2018-03-22 23:59:42 +08:00
你这跟那些‘一行写完 xxx ’有啥区别。
["like", "love", "hate", "yes"].reduce((p, c) => p.length === 0 || p[0].length < c.length ? [c] : p[0].length === c.length ? [...p, c] : p, [])
icenine
2018-03-23 00:21:28 +08:00
系统函数排序实现是扔鞋的吗?
popbones
2018-03-23 06:06:29 +08:00
这就是为什么大家都说“ PHP 是最好的语言”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/440404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX