当前位置: 首页 > 编程笔记 >

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

柴意智
2023-03-14
本文向大家介绍编写Golang程序以查找给定范围内的重复元素,包括了编写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程序以查找给定范围内的质数,包括了编写Golang程序以查找给定范围内的质数的使用技巧和注意事项,需要的朋友参考一下 例子 输入num1 = 3和num2 = 8 =>质数是:3、5、7 输入num1 = 8和num2 = 23 =>质数是:11,13,17,19,23 解决这个问题的方法 步骤1:定义一个接受两个数字num1和num2的函数,类型为int。 步骤2:

  • 本文向大家介绍编写Golang程序以查找给定数组中的重复元素,包括了编写Golang程序以查找给定数组中的重复元素的使用技巧和注意事项,需要的朋友参考一下 例子 输入数组= [1、3、5、6、1] =>重复元素为1; 输入数组= [1、3、5、6、7] =>返回-1 解决这个问题的方法 步骤1: 定义一个接受数组的方法。 第2步: 声明访问过的映射。 步骤3:迭代给定的数组。如果该元素存在于已访问

  • 本文向大家介绍编写Golang程序以查找数组中元素的频率,包括了编写Golang程序以查找数组中元素的频率的使用技巧和注意事项,需要的朋友参考一下 例子 在输入数组中,arr = [2、4、6、7、8、1、2] 给定数组中2的频率为2 7的频率为1 3的频率为0。 解决这个问题的方法 步骤1:定义一个接受数组和数字的函数 步骤2:声明一个变量count = 0。 步骤3:迭代给定数组,如果在数组中

  • 本文向大家介绍编写Golang程序以查找给定数字的阶乘(使用递归),包括了编写Golang程序以查找给定数字的阶乘(使用递归)的使用技巧和注意事项,需要的朋友参考一下 例子 5的阶乘= 5 * 4 * 3 * 2 * 1 = 120 10的阶乘= 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 解决这个问题的方法 步骤1:定义一个接受数字(大于0)的函数,类型为i

  • 我有N个数字,让我们说。现在我想找出在给定范围内有多少对数字。(L和R给定)。数字对=两个数字相同。我的方法:

  • 本文向大家介绍编写Golang程序以查找数组中具有最小值的元素,包括了编写Golang程序以查找数组中具有最小值的元素的使用技巧和注意事项,需要的朋友参考一下 例子 A1 = [2、4、6、7、8、10、3、6、0、1];最小数量为0; A2 = [12、14、16、17、18、110、13、16、10、11];最小数量为10; 解决这个问题的方法 步骤1:将第0个索引处的数字视为最小值,min_