我试图解决一个问题,检查给定int[]的任意两个元素值之和是否等于给定的和值,返回true,检查所有元素后未找到任何内容,返回false。
我用nested for解决了这个问题。。如下所示轻松循环:
public bool CheckValue (int[] given, int sum) {
if (given == null) {
return false;
} else if (given.Length == 0 || given.Length == 1) {
return false;
} else {
for (int i = 0; i < given.Length - 1; i++) {
for (int j = i + 1; j < given.Length; j++) {
if ((given[i] + given[j]) == sum) {
return true;
}
}
}
return false;
}
}
但我想在第二个循环中使用Hashtable来解决这个问题,因为它将简化搜索过程,并尝试了以下代码:
private static bool CheckValueUsingHashTable (int[] given, int sum) {
if (given == null) {
return false;
} else if (given.Length == 0 || given.Length == 1) {
return false;
} else {
Hashtable hashs = new Hashtable ();
for (int i = 0; i < given.Length; i++) {
hashs.Add (i, given[i]);
}
for (int j = 0; j < given.Length; j++) {
int valueToAdd = sum - given[j];
if (hashs.ContainsValue (valueToAdd)) {
return true;
}
}
return false;
}
}
我现在面临的问题是,如果给定的数组是{1,2,3,4},给定的和是2,它可以将第一个元素与自身相加,并返回TRUE,但显然,我不希望发生这种情况。
那么,我该如何从哈希表中搜索一个值并获取密钥呢。当前,该函数根据存在的值返回TRUE或FALSE。
我想这就是你想要的?假设给定的不能包含同一个数字两次。
public static bool CheckValue(int[] given, int sum)
{
if (given == null)
{
return false;
}
if (given.Length == 0 || given.Length == 1)
{
return false;
}
var hashSet = new HashSet<int>(given);
foreach (int num in given)
{
int remainder = sum - num;
if (remainder != num && hashSet.Contains(remainder))
{
return true;
}
}
return false;
}
我们使用
哈希集
您可以添加另一个优化,前提是给定的
是排序的:
foreach (int num in given)
{
int remainder = sum - num;
if (remainder != num && hashSet.Contains(remainder))
{
return true;
}
// Addition is commutative (1 + 2 == 2 + 1), so if we're past the half-way point,
// we're not going to find anything
if (num > sum/2)
{
return false;
}
}
然而,除非
给定的
非常大,否则这几乎肯定会比问题中的简单解决方案慢。直接比较int非常快速,HashSet
问题内容: 我有一个哈希表,其键的模式为USER_TEL,例如: 现在,我想获取密钥中具有相同TEL的所有用户的地址。 我想出的是: 我得到而不是价值观。 问题答案: 您应该使用HSCAN命令。 例如: 更新资料 Python实现:
我刚刚开始学习哈希表,我知道如何插入,但不知道如何搜索。以下是我将基于这个问题的算法: 散列密钥 线性探测碰撞分辨率。 假设我用键1、11和21调用两次插入。这将返回所有3个键的槽1。冲突解决后,表在槽1、2和3处将有值1、11和21。这就是我对插入的理解。 完成此操作后,如果搜索键11和21,我将如何获得插槽2和3?从我所读到的内容来看,搜索哈希表应该做与插入完全相同的事情,除非当你到达所需的插
问题内容: 我有 我想按 位置 获得 职位, 而不是关键 职位 。 我不想使用迭代。 还有其他方法可以基于索引获取Value吗? 问题答案: 您无法获得基于索引的值,只是那样行不通。一种解决方法是根据您的值创建一个新列表,然后根据索引获取值。
我试图从ruby中的哈希表中获取第一个键和值键。我不知道散列的键值,因为它被传递给了方法。我在网上找不到如何将第一个键/值作为单独的哈希表查找。我认为只会试图找到一个名为0的元素,当我运行代码时,它只会返回。 我知道我可以找到密钥名和值,然后根据它们创建一个新的哈希,但我想知道是否有更简单的方法来做到这一点,这样我就可以立即得到一个哈希。 下面是我的代码: 这让我得到了正确的结果问题是我不明白为什
问题内容: 我需要找到具有true的行或值大于15的行。我可以使用for循环进行迭代,但是,我想知道numpy是否可以更有效地做到这一点? 问题答案: 要获取至少一项大于15的行号:
问题内容: 对于给定的URL,我想从数据库中获取哈希后名称的年龄。因此,对于url这样,您会看到“ ”。 如何在网址中的哈希值之后提取值?(我需要一种安全的,与所有浏览器兼容的NON-JAVASCRIPT方式)。我想要像$ _GET [‘after hash’]这样。 我不使用GET的原因是因为我想使用AJAX和jquery的历史记录插件。 基本上我想要的是使用ajax根据哈希后分配的值从服务器检