编写Golang程序以查找给定范围内的重复元素

我们可以通过两种不同的方式解决此问题。让我们检查第一种方法。

方法1: 

例子

输入数组= [1、2、3、4、4] =>范围是1到5,但是4是该范围内的重复元素。

解决这个问题的方法

  • 步骤1: 定义一个接受数组的方法。

  • 第2步: 声明访问过的映射。

  • 步骤3:迭代给定的数组。如果该元素存在于访问的映射中,则返回该元素。

  • 步骤4:否则,返回-1。

程序

package main

import "fmt"

func duplicateInArray(arr []int) int{

   visited := make(map[int]bool, 0)

   for i:=0; i<len(arr); i++{

      if visited[arr[i]] == true{

         return arr[i]

      } else {

         visited[arr[i]] = true

      }

   }

   return -1

}

func main(){

   fmt.Println(duplicateInArray([]int{1, 2, 3, 4, 4}))

   fmt.Println(duplicateInArray([]int{4, 5, 6, 7, 7}))

   fmt.Println(duplicateInArray([]int{1, 2, 3, 4, 5}))

}

输出结果
4

7

-1

现在,让我们检查解决该问题的第二种方法。

方法2:使用XOR操作

例子

输入数组= [1、2、3、4、4] =>范围是1到5,但该范围内有4个重复。

范围是1到5。=> XOR => 0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 4 ^ 0 ^ 1 ^ 2 ^ 3 ^ 4 => 4(因为0 ^ 1 = 1)。

解决这个问题的方法

  • 步骤1: 定义一个接受数组的方法。

  • 步骤2: 从给定的数组中找到范围值,并定义变量xor,以0初始化。

  • 步骤3:迭代给定的数组,并对数组的元素进行异或运算。

  • 步骤4:还要执行从较低范围值到较高范围值的异或运算。

  • 步骤5:最后,返回xor变量(重复元素的非零值)。

程序

package main

import "fmt"

func duplicateInArray(arr []int, r int) int{

   xor := 0

   for i:=0; i<len(arr); i++{

      xor ^= arr[i]

   }

   for j:=1; j<=r-1; j++{

      xor ^= j

   }

   return xor

}

输出结果
4

3

1

0

以上是 编写Golang程序以查找给定范围内的重复元素 的全部内容, 来源链接: utcz.com/z/350084.html

回到顶部