返回顶部
首页 > 资讯 > 精选 >使用go语言怎么查找两个数组的异同
  • 637
分享到

使用go语言怎么查找两个数组的异同

2023-06-15 07:06:18 637人浏览 独家记忆
摘要

这篇文章给大家介绍使用Go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:输入:arr_old:&nbs

这篇文章给大家介绍使用Go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:

输入:arr_old: {"1", "2", "4", "5", "7", "9"}arr_new: {"2", "3", "4", "6", "7"}返回:arr_added: {"3", "6"}arr_deleted: {"1", "5", "9"}

go的标准库中没有类似的直接比较的方法,需要自己具体实现,最简单的方法当然是旧数组的每个元素去新数组,找不到的就是删除的,然后新数组的元素再挨个去旧数组找一遍,找不到就是新增的,但这个方法效率实在太低了。

上代码,这里有个技巧,就是利用go中map键唯一性的特性,用数组的元素作为map的key,通过map来实现快速查找。

package mainimport ("fmt")func main() {//fmt.Println("Hello World!")src := []string{"1", "2", "4", "5", "7", "9"}dest := []string{"2", "3", "4", "6", "7"}added, removed := Arrcmp(src, dest)fmt.Printf("add: %v\nrem: %v\n", added, removed)}func Arrcmp(src []string, dest []string) ([]string, []string) {msrc := make(map[string]byte) //按源数组建索引mall := make(map[string]byte) //源+目所有元素建索引var set []string //交集//1.源数组建立mapfor _, v := range src {msrc[v] = 0mall[v] = 0}//2.目数组中,存不进去,即重复元素,所有存不进去的集合就是并集for _, v := range dest {l := len(mall)mall[v] = 1if l != len(mall) { //长度变化,即可以存l = len(mall)} else { //存不了,进并集set = append(set, v)}}//3.遍历交集,在并集中找,找到就从并集中删,删完后就是补集(即并-交=所有变化的元素)for _, v := range set {delete(mall, v)}//4.此时,mall是补集,所有元素去源中找,找到就是删除的,找不到的必定能在目数组中找到,即新加的var added, deleted []stringfor v, _ := range mall {_, exist := msrc[v]if exist {deleted = append(deleted, v)} else {added = append(added, v)}}return added, deleted}

运行结果:

add: [6 3]rem: [1 5 9]

欢迎大家交流效率更高的方法。

以上就是详解用go语言实现查找两个数组的异同的详细内容,更多请关注编程网其它相关文章!

关于使用go语言怎么查找两个数组的异同就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用go语言怎么查找两个数组的异同

本文链接: https://lsjlt.com/news/278919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用go语言怎么查找两个数组的异同
    这篇文章给大家介绍使用go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:输入:arr_old:&nbs...
    99+
    2023-06-15
  • 不同语言中数组与Go语言数组的差异
    go 语言数组与其他语言数组的不同之处:内存分配: go 数组在运行时分配内存,大小可重新分配,而其他语言数组在编译时分配并固定大小。类型安全: go 数组只持有特定类型元素,避免运行时...
    99+
    2024-04-11
    go 数组 go语言 c++
  • php如何查找出两个数组的不同值
    PHP作为一门广泛使用的编程语言,在处理数组的过程中经常需要比较两个数组之间的不同值。本文就将介绍一些PHP查找出两个数组的不同值的方法。方法一:使用array_diff()函数array_diff()函数在比较两个数组之间不同值时非常有用...
    99+
    2023-05-23
  • 探寻Go语言切片和数组之间的异同
    Go语言作为一门十分流行的编程语言,具有丰富的数据类型和功能特性。其中,切片(slice)和数组(array)是常用的数据类型,但它们之间有着很多异同之处。本文将通过具体的代码示例,深...
    99+
    2024-04-02
  • Go语言的数组怎么用
    本篇内容介绍了“Go语言的数组怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数组变量的定义我们先试一下只申明类型,不赋初值。这时编译器...
    99+
    2023-06-02
  • Linux怎么查找两个目录之间的差异
    这篇文章主要讲解了“Linux怎么查找两个目录之间的差异”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux怎么查找两个目录之间的差异”吧!通常,为了比较Linux中的两个文件,我们使用...
    99+
    2023-06-15
  • 怎么用go语言比较两个对象是否深度相同
    这篇文章主要介绍“怎么用go语言比较两个对象是否深度相同”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用go语言比较两个对象是否深度相同”文章能帮助大家解决问题。前言:func Dee...
    99+
    2023-06-30
  • Django和Go教程:如何在两种不同的编程语言中使用数组
    数组是程序员在日常编程中使用最频繁的数据结构之一。它可以被用于存储大量的数据,并且可以被用于搜索、排序和过滤这些数据。在这篇文章中,我们将会探讨如何在Django和Go这两种不同的编程语言中使用数组。 Django是一个基于Python的...
    99+
    2023-11-04
    教程 数组 django
  • Go语言中异步编程如何使用数组?
    Go语言是一门功能强大的编程语言,它支持异步编程,这使得Go语言在处理高并发场景下更加出色。数组是Go语言中最基本的数据结构之一,本文将介绍如何在Go语言中使用数组进行异步编程。 数组是一种有序的集合,其中每个元素都有一个唯一的下标。在Go...
    99+
    2023-08-08
    异步编程 数据类型 数组
  • Go语言中数组怎么用
    这篇文章主要介绍Go语言中数组怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述固定长度,数组声明后长度便不能再修改只能存储一种特定类型元素的序列语法编号方式代码示例1直接声明var arr [3]int2ma...
    99+
    2023-06-25
  • Go语言的数组如何使用
    这篇文章主要讲解了“Go语言的数组如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言的数组如何使用”吧!什么是数组什么是数组?数组是有固定长度的相同数据类型元素的集合, 如下图所...
    99+
    2023-07-05
  • Go和JavaScript:两种语言在异步编程方面的异同点是什么?
    随着互联网技术的快速发展,越来越多的应用程序需要实现异步编程。在这种情况下,Go和JavaScript两种语言都是广泛使用的编程语言。虽然两种语言都支持异步编程,但它们在实现异步编程方面有很大的不同。本文将详细介绍Go和JavaScrip...
    99+
    2023-09-26
    javascript 异步编程 http
  • 怎么在c语言中使用二分法查找数组中的元素
    今天就跟大家聊聊有关怎么在c语言中使用二分法查找数组中的元素,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。c语言二分法实现查找数组元素的方法:递归算法#include<stdi...
    99+
    2023-06-14
  • php怎么取两个数组的不同值
    3种取不同值的方法:1、比较数组键值并返回一个包含不同值的差集数组,语法“array_diff(数组1,数组2)”。2、比较数组键名并返回一个包含不同值的差集数组,语法“array_diff_key(数组1,数组2)”。3、比较数组的键名和...
    99+
    2024-04-02
  • r语言怎么在数组中查找唯一值
    在R语言中,可以使用unique()函数来从数组中查找唯一值。示例如下: # 创建一个包含重复元素的数组 arr <- c(1...
    99+
    2024-03-06
    r语言
  • r语言怎么在数组中查找缺失值
    在R语言中,可以使用is.na()函数来查找数组中的缺失值。例如,假设有一个包含缺失值的数组a,可以使用以下代码来查找缺失值: a ...
    99+
    2024-03-06
    r语言
  • 使用go语言怎么实现数组比较
    这篇文章给大家介绍使用go语言怎么实现数组比较,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。比较两个数组是否相等如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==和!=)来...
    99+
    2023-06-15
  • 在Java中怎么查找两个列表之间的差异
    本篇内容介绍了“在Java中怎么查找两个列表之间的差异”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. ...
    99+
    2024-04-02
  • c语言怎么统计数组相同元素个数
    可以使用两层循环遍历数组,对每个元素进行比较,如果相同则计数器加一。 示例代码如下: #include int countDup...
    99+
    2023-10-26
    c语言
  • 如何使用Go语言的数据类型来实现数组同步?
    Go语言是一门由Google开发的编程语言,它具有简单、快速、安全等特点。在Go语言中,数组是一种非常重要的数据类型,它可以用来存储一组相同数据类型的元素。但是,在多线程的情况下,如果多个线程同时对同一个数组进行操作,就可能会出现数据不一...
    99+
    2023-10-11
    数据类型 同步 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作