候鸟解决方案- PHP-

cetgtptt  于 2022-12-17  发布在  PHP
关注(0)|答案(4)|浏览(117)

我用PHP为practice编写了这个解决方案,但它并不适用于所有情况:
给定一个观鸟的数组,其中每个元素代表一个鸟的类型id,确定最常被看到的类型id。如果超过一个类型被发现达到最大数量,返回它们id中最小的。
arr=[1、1、2、2、3]
示例
类型1和类型2各有两个,类型3有一个瞄准。选择两次看到的两个类型中较低的一个:类型1。
功能描述
在下面的编辑器中完成migratoryBirds函数。
migratoryBirds具有以下参数:
int arr[n]:所见鸟类的种类
int:最常见鸟类的最小类型id输入格式
第一行包含一个整数n,表示arr的大小,第二行将arr描述为n个以空格分隔的整数,每个整数表示所看到的鸟的类型号。
约束条件5〈n〈2 X 10 2
保证每个类型为1、2、3、4或5。
样品输入0
六个
1 4 4 4 5 3
样本输出0
4
这是我的密码

function migratoryBirds($arr) {
    // Write your code here
    $length=count($arr);
    $a1=0;$a2=0;$a3=0;$a4=0;$a5=0;
    
    for($i=0; $i < $length; $i++){
        
        if($arr[$i]==1){
            $a1++;
        }
        if($arr[$i]==2){
            $a2++;
        }
        if($arr[$i]==3){
            $a3++;
        }
        if($arr[$i]==4){
            $a4++;
        }
        if($arr[$i]==5){
            $a5++;
        }
    }
    
    if($a1>=$a2 && $a1>=$a3 && $a1>=$a4 && $a1>=$a5){
        $result=1;    
    }
     if($a2>=$a1 && $a2>=$a3 && $a2>=$a4 && $a2>=$a5){
         $result=2;   
    }
     if($a3>=$a2 && $a3>=$a1 && $a3>=$a4 && $a3>=$a5){
         $result=3;
    }
    if($a4>=$a2 && $a4>=$a3 && $a4>=$a1 && $a4>=$a5){
         $result=4;
    }
    if($a5>=$a2 && $a5>=$a3 && $a5>=$a4 && $a5>=$a1){
         $result=5;
    }
 
  return $result;
}

我该怎么解决呢?

hrysbysz

hrysbysz1#

这样写你的条件

if($a1>=$a2 && $a1>=$a3 && $a1>=$a4 && $a1>=$a5){
        $result=1;    
    }
     else if($a2>=$a1 && $a2>=$a3 && $a2>=$a4 && $a2>=$a5){
         $result=2;   
    }
     else if($a3>=$a2 && $a3>=$a1 && $a3>=$a4 && $a3>=$a5){
         $result=3;
    }
    else  if($a4>=$a2 && $a4>=$a3 && $a4>=$a1 && $a4>=$a5){
         $result=4;
    }
    else if($a5>=$a2 && $a5>=$a3 && $a5>=$a4 && $a5>=$a1){
         $result=5;
    }
    else{
         $result=1;
    }
wh6knrhe

wh6knrhe2#

给定一个观鸟的数组,其中每个元素代表一个鸟的类型id,确定最常被看到的类型id。如果超过一个类型被发现达到最大数量,返回它们id中最小的。
对于这个问题我写了一个代码。它通过了所有的测试用例。
我的代码如下:
导入数学导入操作系统导入随机导入重新导入系统
候鸟(目):

x = [0] *(max(arr)+1)
for i in arr:
    x[i] += 1
return x.index(max(x))

如果名称==“”:

fptr = open(os.environ['OUTPUT_PATH'], 'w')

arr_count = int(input().strip())

arr = list(map(int, input().rstrip().split()))

result = migratoryBirds(arr)

fptr.write(str(result) + '\n')

fptr.close()
qqrboqgw

qqrboqgw3#

在这里试试这个:

$array = array(1,2 ,3, 4, 5, 4, 3, 2, 2, 1, 3, 4);

$counted = array_count_values($array);

$n = null;
$v = 0;

foreach($counted as $nm => $val) {
    if ($val > $v) {
        $n = $nm;
        $v = $val;
    }
}

echo $n;
9o685dep

9o685dep4#

希望这对你有帮助。

function migratoryBirds($arr) {
    // Write your code here
      foreach($arr as $value){
        if(isset($new_arr[$value])){
            $new_arr[$value] += 1;
        }else{
            $new_arr[$value] = 1;
        }
      }
    
      $min_key = '';
      $max_val = 0;
    
      for($i=(count($new_arr)); $i>=0; $i--){
        if(isset($new_arr[$i])){
          if($new_arr[$i] >= $max_val){
             $min_key = $i;
             $max_val = $new_arr[$i];
          }
        } 
      }
      return $min_key;
    }

相关问题