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

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

罗俭
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

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

  • 我有一个粒子模拟项目,我已经工作了很多个小时,我将发布两个类。一个是粒子类,一个是main和Canvas类。我创建一个画布,然后得到它的BufferStrategy和一个Graphics在上面绘制。我使用更新循环来更新每一帧的粒子,并使用渲染循环来渲染每一帧的粒子。更新和渲染都是通过调用粒子数组列表中每个粒子的自渲染和自更新方法来完成的。现在这是我的问题。我有一个MouseListener,它在中