本篇文章给大家带来了关于php的相关知识,其中主要跟大家分享一道算法题的趣味解法,有代码示例,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。
最近在 Leetcode 上看到的,给人眼前一亮的感觉。
原文链接:https://leetcode.cn/problems/contains-duplicate/
题目
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 示例 1:
输入:nums = [1,2,3,1]
输出:true
示例 2:
输入:nums = [1,2,3,4]
输出:false
示例 3:
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
|
标准解法
1 2 3 4 5 6 7 8 9 10 11 12 | function containsDuplicate( $nums ) {
foreach ( $nums as $val ){
if ( $repeat [ $val ] != '' ){
return true;
} else {
$repeat [ $val ] = $val ;
}
}
return false;
}
|
趣味解法
原理:掷两个骰子,次数足够多,有相同的话,说明是有重复的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function containsDuplicate( $nums ) {
$total = count ( $nums );
for ( $i =0; $i < 100000; $i ++) {
$a = mt_rand() % $total ;
$b = mt_rand() % $total ;
if ( $a != $b && ( $nums [ $a ] == $nums [ $b ])){
return true;
}
}
return false;
}
|
以上就是分享一道算法题的PHP趣味解法的详细内容
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。