相关疑难解决方法(0)

算法:从数组中删除重复整数的有效方法

我在接受微软采访时遇到了这个问题.

给定一个随机整数数组,在C中编写一个算法,删除重复的数字并返回原始数组中的唯一数字.

例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?}

需要注意的是,预期的算法不应该首先对数组进行排序.当一个元素被移除后,以下元素也必须向前移动.无论如何,元素尾部元素向前移动的元素值可以忽略不计.

更新:必须在原始数组中返回结果,并且不应使用辅助数据结构(例如哈希表).但是,我想订单保存不是必需的.

更新2:对于那些想知道为什么这些不切实际的约束的人来说,这是一个面试问题,在思考过程中讨论所有这些约束,看看我如何能够提出不同的想法.

c arrays algorithm duplicates

88
推荐指数
10
解决办法
19万
查看次数

如何在混洗连续整数数组中找到重复元素?

我最近在某个地方遇到过一个问题:

假设您有一个1001整数的数组.整数是随机顺序,但您知道每个整数在1到1000之间(包括1和1000).此外,每个数字在数组中只出现一次,但一个数字除外,它出现两次.假设您只能访问数组的每个元素一次.描述一个算法来查找重复的数字.如果您在算法中使用了辅助存储,是否可以找到不需要它的算法?

我感兴趣的是第二部分,即不使用辅助存储.你有什么主意吗?

arrays algorithm duplicates

72
推荐指数
6
解决办法
6万
查看次数

Elixir从列表中删除重复项

有人愿意使用Functional Programming和Elixir Constructs为List(X)中的重复值提供一些替代解决方案吗?

X = [1,26,3,40,5,6,6,7] # the 6 being the duplicate
Run Code Online (Sandbox Code Playgroud)

我想到的用于解决此问题的库存解决方案是迭代列表(X),并添加到新的列表(Y),其中密钥尚不存在.

谢谢

elixir

22
推荐指数
1
解决办法
1万
查看次数

如何在不使用集合的情况下从java中的给定数组中删除重复元素

我有这样的数组元素:

int arr[] = {1,1,2,2,3,3,4,4};
Run Code Online (Sandbox Code Playgroud)

我想从中删除重复的元素.在互联网上搜索并了解了ArrayUtil类.你可以通过告诉它的用法来帮助我 - 这就是我如何在输出中获得这样的数组:

arr[] = {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)

java arrays

3
推荐指数
2
解决办法
2万
查看次数

两个大小为100万的数组中的第一个常见数字

我有两个非常大的整数数组,每个数组的大小约为100万.我必须找到两个数组中都存在的第一个整数.

我尝试用套装做到这一点.

(1)同时遍历每个数组并将两个数组的元素插入集合中.

(2)每当集合拒绝接受这是第一个交叉点.

int Solution(int A[], int B[])
{
    Set s = new HashSet();
    for (int i = 0 ; ; i++)
    {
        if ( i < A.length )
        {
            if( !s.Add(A[i]) )
                System.out.println(A[i]);
        }
        if ( i < B.length )
        {
            if( !s.Add(B[i]) )
                System.out.println(B[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们能否改进此解决方案以减少时间复杂度?

谢谢

java arrays algorithm

2
推荐指数
1
解决办法
159
查看次数

在O(n log n)时间内计算数组中的出现次数

给定一个A[]包含n整数的未排序数组,如何创建一个算法来返回最常出现的元素?

我想你需要一种方法来计算元素出现的次数.我只能想出一个O(n 2)实现.我知道我需要首先使用排序算法,但如果我使用合并排序,那已经是O(n logn)的总运行时间了.我只对数据进行了排序,我不能在不进一步增加运行时的情况下查看元素.

algorithm big-o

2
推荐指数
1
解决办法
1771
查看次数

最快的算法来查找实数数组中每个元素的频率?

问题是找到一组实数的每个元素的频率.

double[] a = new double[n]
int[] freq = new int[n]
Run Code Online (Sandbox Code Playgroud)

我想出了两个解决方案:

第一个解决方案O(n ^ 2):

for (int i = 0; i < a.length; i++) {
  if (freq[i] != -1) {
    for (int j = i + 1; j < a.length; j++) {
      if (a[i] == a[j]) {
        freq[i]++;
        freq[j] = -1;
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

第二个解决方案O(nlogn):

quickSort(a, 0, a.length - 1);

freq[j] = 1;
for (int i = 0; i < a.length - 1; i++) {
  if (a[i] == a[i …
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm performance

2
推荐指数
1
解决办法
547
查看次数

如何通过python检查列表超过9000个元素的时间较少的重复项

嗯试图通过python检查整数列表中是否存在重复值.这是成功的,我发现当列表的大小增加时执行时间越来越长.我怎样才能改善以下逻辑的运行时间?

def containsDuplicate( nums):
    if len(nums) < 2:
        return False
    cnt = 0
    flag = False
    length = len(nums)
    while cnt < length:
        p = cnt + 1
        while p < length:
            if nums[cnt] == nums[p]:
                flag = True
                break
            p += 1
        cnt += 1
    return flag
Run Code Online (Sandbox Code Playgroud)

python algorithm

0
推荐指数
1
解决办法
154
查看次数

标签 统计

algorithm ×6

arrays ×5

java ×3

duplicates ×2

big-o ×1

c ×1

elixir ×1

performance ×1

python ×1