当前位置: 首页 > 知识库问答 >
问题:

袜子商人的问题:我正在尝试用一种不同的方法来做这件事

罗俭
2023-03-14

约翰在一家服装店工作。他有一大堆袜子,必须按颜色配对出售。给定一个表示每只袜子颜色的整数数组,确定有多少双颜色匹配的袜子。

例如,有n=7颜色ar=[1,2,1,2,1,3,2]的袜子。有一对颜色1和一对颜色2。剩下三只零零散散的袜子,每种颜色一只。对数为2

我的代码:

class Sock
{
    public static void  main(String args[])
    {
        int n=10;
        int ar[] = new int[]{1,1,3,1,2,1,3,3,3,3};
        int count = 0,number=0;

        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(ar[i]==ar[j])
                {
                    count++;
                }
            }

             if(count%2==0)
                number++;

        }
        System.out.println("Pairs =  "+number);
    }
}

我试着用不同的方法来做这个问题。例如:首先ar[0]=1频率是3,count=3包含自身,然后如果count>1和如果count%2==0则增加number++,所以如果1ar[2]=1然后再次从ar[2]=1计数1的频率。然后我们得到了1的频率3,2,1AR[0]AR[6],AR[2]AR[6],AR[4]AR[6]

因此我们得到1's1time,'2's1time:total=2pair

共有1个答案

翟修永
2023-03-14

如果使用哈希表,这可以在O(n)时间复杂度和O(n)空间中完成。

Hashtable将具有Key=Socks的颜色,Value=每种颜色的总数。

total_count = dict()
for i in range(len(arr)):
    if arr[i] in total_count:
        total_count[arr[i]] += 1

pairs = 0
for i in total_count:
    pairs += int(total_count[i] / 2)

print(pairs)

在数组上迭代一次,并将每次出现的颜色存储在哈希表中。然后对哈希表进行迭代,检查每种颜色的计数是否可以被2整除。那就给你双鞋了。

 类似资料:
  • 我已经解决了hackerrank Sock Merchant问题,但我想降低代码的复杂性(我不确定这是否可能)。 约翰在一家服装店工作。他有一大堆袜子,必须按颜色配对出售。给定一个表示每只袜子颜色的整数数组,确定有多少双颜色匹配的袜子。 在下面的编辑器中完成sockMerchant函数。它必须返回一个整数,表示可用的匹配socks对的数量。 sockMerchant具有以下参数: > n:袜子堆中

  • 获取以下错误: 线程“main”java.io.FileNotFoundException出现异常:config.properties(系统找不到指定的文件)在java.io.FileInputStream.Open(本机方法)在java.io.FileInputStream.(FileInputStream.java:138)在java.io.FileInputStream.(FileInput

  • 我想做的密码强度角,大写,小写,数字和特殊字符角在控制台中,我得到的错误。 没有密码强度的提供者!在passwordstrength.ts文件中 超文本标记语言 断续器 密码strength.ts

  • 我做了一个两个类,一个文本文件,和一个应该打印出来的代码,但无论我做什么,它仍然变成空?我试图通过使用InventoryTester中的Book类中的toString方法和Inventory类中的printInventory从文本文件中读取代码。 我的第一个代码是在应该打印的内容上派生的。我做了一个构造函数,我用setter和getter来做这个。然后用toString()方法结束它。我做了一个B

  • 一个php文件做前端的接口,这样来请求数据的写法合适吗? 大致就是:我使用了一个Mysql数据库操作框架,然后建立了一个api.php ,前端发起请求,后端返回数据。 我是这样写的 前端给一个自定义的参数名用来发起请求,后端api.php 用if判断前端给的参数名返回什么样的数据。 这样做合适不,因为if挺多的,目测三四十个。会不会影响性能?或者有什么好的方法,本人初学者,不吝赐教。

  • 总计=14种不匹配袜子的可能组合。这似乎太天真了。有没有人对如何优化有什么想法?如果需要,我可以发布我的代码。