比较两个整数数组并找到第一个到最后一个差异的最佳方法是什么?

返回Http402

假设两个整数数组nums和numsCopy,例如:

int[] nums = {2,5,3,8,6,10}
int[] numsCopy = {2,3,5,6,8,10}

我想比较两个数组并找到第一个和最后一个不同的整数并记录它们的位置然后计算长度,最好的方法是什么?使用java。

纽菲尔德

当然,最好的方法是使用两次迭代。正如@greybeard 所提到的,我们真的很想知道使用两次迭代有什么问题。

尽管如此,为了回答这个问题,一种不使用两个for循环等的可能方法(绝不是最好的方法)是将任务委托给 Java9 流 API:

if (nums.length != numsCopy.length)
   throw new IllegalArgumentException("Arrays are not the same length");

IntPredicate elementsEqual = i -> nums[i] == numsCopy[i];
int first = IntStream.range(0, nums.length)
    .dropWhile(elementsEqual)
    .findFirst()
    .getAsInt();
int last = IntStream.iterate(nums.length - 1, i -> i >= first, i -> i - 1)
    .dropWhile(elementsEqual)
    .findFirst()
    .getAsInt();
int count = last - first + 1;

NoSuchElementException如果没有发现差异,则抛出

如果你想要的只是差异子序列的长度,你可以在一个流语句中做到这一点:

long length = IntStream.iterate(nums.length - 1, i -> i >= 0, i -> i - 1)
    .dropWhile(elementsEqual)
    .limit(1)
    .flatMap(end -> IntStream.rangeClosed(0, end))
    .dropWhile(elementsEqual)
    .count();

这将返回所需子序列的长度,如果数组匹配,则返回 0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python列表中查找元素的第一个和最后一个出现的最佳方法是什么?

来自分类Dev

这两个函数找到第一个否定条目的本质区别是什么?

来自分类Dev

找到数组的第一个非重复整数

来自分类Dev

在C ++中找到两个向量中第一个公共条目的位置的最快方法是什么?

来自分类Dev

为什么我的代码只比较数组的第一个和最后一个数字 - Java

来自分类Dev

确定给定月份的第一个和最后一个工作日的最佳方法是什么

来自分类Dev

如何找到最后一个数组的键

来自分类Dev

比较两个文本文件文件并返回第一个差异所在的行和列

来自分类Dev

C struct指针从第一个元素到最后一个元素的步骤

来自分类Dev

达到最后一个值后,“环绕”到第一个值

来自分类Dev

将Vector的第一个元素移到最后一个元素

来自分类Dev

如何使孩子从第一个间隙到最后一个间隙跨越网格?

来自分类Dev

C struct指针从第一个元素到最后一个元素的步骤

来自分类Dev

如何比较两个数组,删除第二个中缺少的第一个元素并推送差异

来自分类Dev

给定Ruby中的第一个整数和大小,创建一个整数数组

来自分类Dev

给定Ruby中的第一个整数和大小,创建一个整数数组

来自分类Dev

比较两个具有对象的数组,并从第一个数组中删除重复项

来自分类Dev

比较数组中的两个元素,如果某些属性匹配,则更新第一个数组的属性

来自分类Dev

当第一个数字表示最后一个索引时如何找到数组中的最大差异

来自分类Dev

确定第一个和最后两个帖子

来自分类Dev

安排一个整数数组,使两个连续的数字之和不被3整除

来自分类Dev

在整数数组中查找第一个非重复数

来自分类Dev

从整数数组中收集/提取第一个位

来自分类Dev

C#通过一个属性比较两个列表并更改第一个列表的值

来自分类Dev

比较两个列表并在条件满足后获得第一个值

来自分类Dev

比较两个对象,仅返回第一个对象的匹配值

来自分类Dev

共同的第一个字段比较两个排序的文件

来自分类Dev

从每行JAVA替换String的两个第一个字符的最佳方法

来自分类Dev

从每行JAVA替换String的两个第一个字符的最佳方法

Related 相关文章

  1. 1

    在Python列表中查找元素的第一个和最后一个出现的最佳方法是什么?

  2. 2

    这两个函数找到第一个否定条目的本质区别是什么?

  3. 3

    找到数组的第一个非重复整数

  4. 4

    在C ++中找到两个向量中第一个公共条目的位置的最快方法是什么?

  5. 5

    为什么我的代码只比较数组的第一个和最后一个数字 - Java

  6. 6

    确定给定月份的第一个和最后一个工作日的最佳方法是什么

  7. 7

    如何找到最后一个数组的键

  8. 8

    比较两个文本文件文件并返回第一个差异所在的行和列

  9. 9

    C struct指针从第一个元素到最后一个元素的步骤

  10. 10

    达到最后一个值后,“环绕”到第一个值

  11. 11

    将Vector的第一个元素移到最后一个元素

  12. 12

    如何使孩子从第一个间隙到最后一个间隙跨越网格?

  13. 13

    C struct指针从第一个元素到最后一个元素的步骤

  14. 14

    如何比较两个数组,删除第二个中缺少的第一个元素并推送差异

  15. 15

    给定Ruby中的第一个整数和大小,创建一个整数数组

  16. 16

    给定Ruby中的第一个整数和大小,创建一个整数数组

  17. 17

    比较两个具有对象的数组,并从第一个数组中删除重复项

  18. 18

    比较数组中的两个元素,如果某些属性匹配,则更新第一个数组的属性

  19. 19

    当第一个数字表示最后一个索引时如何找到数组中的最大差异

  20. 20

    确定第一个和最后两个帖子

  21. 21

    安排一个整数数组,使两个连续的数字之和不被3整除

  22. 22

    在整数数组中查找第一个非重复数

  23. 23

    从整数数组中收集/提取第一个位

  24. 24

    C#通过一个属性比较两个列表并更改第一个列表的值

  25. 25

    比较两个列表并在条件满足后获得第一个值

  26. 26

    比较两个对象,仅返回第一个对象的匹配值

  27. 27

    共同的第一个字段比较两个排序的文件

  28. 28

    从每行JAVA替换String的两个第一个字符的最佳方法

  29. 29

    从每行JAVA替换String的两个第一个字符的最佳方法

热门标签

归档