约翰在一家服装店工作。他有一大堆袜子,必须按颜色配对出售。给定一个表示每只袜子颜色的整数数组,确定有多少双颜色匹配的袜子。
例如,有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++
,所以如果1
来ar[2]=1
然后再次从ar[2]=1
计数1的
频率。然后我们得到了1的
频率3,2,1
从AR[0]
到AR[6]
,AR[2]
到AR[6]
,AR[4]
到AR[6]
。
因此我们得到1's
对1time
,'2's
对1time
:total=2pair
。
如果使用哈希表,这可以在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种不匹配袜子的可能组合。这似乎太天真了。有没有人对如何优化有什么想法?如果需要,我可以发布我的代码。