拆分数组唯一对 [英] Split array into unique pairs

查看:95
本文介绍了拆分数组唯一对的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我先从一个简单的数组(可以是任何长度的理论上):

  $ IDS =阵列(1,2,3,4);

什么是分裂这个数组唯一对像数组中选择最佳的解决方案:

  $一双[0] =阵列(1,2);
$对[1] =阵列(1,3);
$对[2] =阵列(1,4);
$对[3] =阵列(2,3);
$对[4] =阵列(2,4);
$对[5] =阵列(3,4);


解决方案

最简单的解决方法是使用嵌套循环和构建组合,当您去,但请注意,这里复杂度为O(N 2 )。

  $ IDS =阵列(1,2,3,4,4);
$组合=阵列();$ IDS = array_unique($ IDS); //删除重复
$ num_ids =计数($ IDS);为($ I = 0; $ I< $ num_ids; $ I ++)
{
  为($ J = $ I + 1; $ J< $ num_ids; $ J ++)
  {
    $组合[] =阵列($ IDS [$ i],$ IDS [$ J]);
  }
}

在操作中查看在 http://www.ideone.com/9wzvP

Say i start with a simple array (which could be theoretically of any length):

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

What it the best solution for splitting this array into an array of unique pairs like:

$pair[0] = array(1,2);
$pair[1] = array(1,3);
$pair[2] = array(1,4);
$pair[3] = array(2,3);
$pair[4] = array(2,4);
$pair[5] = array(3,4);

解决方案

The simplest solution is to use a nested loop and build combinations as you go, although note that the complexity here is O(n2).

$ids = array(1,2,3,4,4);
$combinations = array();

$ids = array_unique($ids); // remove duplicates
$num_ids = count($ids);

for ($i = 0; $i < $num_ids; $i++)
{
  for ($j = $i+1; $j < $num_ids; $j++)
  {
    $combinations[] = array($ids[$i], $ids[$j]);
  }
}

See this in action at http://www.ideone.com/9wzvP

这篇关于拆分数组唯一对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆