Golang程序 寻找指定范围内的重复元素

Golang程序 寻找指定范围内的重复元素

我们可以用两种不同的方法解决这个问题。让我们检查一下第一种方法。

方法一

例子

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

解决这个问题的方法

  • 第1步: 定义一个接受数组的方法。
  • 第2步: 声明一个访问的Map。
  • 第3步:对给定的数组进行迭代。如果该元素存在于访问Map中,那么返回该元素。
  • 第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^0^1^2^3^4 => 4(因为0^1=1)。

解决这个问题的方法

  • 第1步: 定义一个接受数组的方法。
  • 第2步: 从给定的数组中找到范围值,并定义一个变量 xor ,初始化为0。
  • 第3步 :对给定的数组进行迭代,并对数组的元素进行 xor 操作。
  • 第4步: 同样从低范围值到高范围值进行 xor 操作。
  • 第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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程