目录
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
欢迎志同道合者一起交流学习,我的QQ:94509325/微信
不重复的两个数(Two Non Repeating Numbers)这类算法在多个实际应用场景中都有着广泛的应用。常见应用场景主要有:
1、去重和排序:在处理大量数据时,经常需要去除重复项并对数据进行排序。例如,在数据库查询、日志文件分析或电子商务网站的订单处理中,可能需要对用户ID、产品ID或其他唯一标识符进行去重操作。
2、唯一性验证:在注册新用户、创建新订单或添加新产品时,需要确保提供的标识符(如用户名、订单号或产品代码)是唯一的。这类算法可以快速检查并防止重复项的创建。
3、哈希表和集合:在计算机科学中,哈希表和集合是两种常用的数据结构,它们依赖于不重复元素的算法来确保数据的唯一性。哈希表用于快速查找和存储键值对,而集合则用于存储不重复的元素集合。
4、密码学和安全:在密码学和安全领域,不重复的两个数算法也有着重要的应用。例如,在生成随机数或加密密钥时,需要确保生成的数是唯一的,以防止潜在的安全漏洞。
5、推荐系统:在构建推荐系统时,可能需要对用户的偏好或行为进行分析,并基于这些不重复的数据来生成个性化的推荐。
6、生物信息学和基因组学:在生物信息学和基因组学领域,研究人员经常需要处理大量的基因序列或生物标记物数据。通过利用不重复的两个数算法,可以高效地识别和分析这些独特的数据点。
7、网络流量分析:在网络安全和流量分析中,可能需要跟踪和识别唯一的IP地址、端口号或其他网络标识符。这类算法可以帮助快速识别出异常或恶意流量。
总之,不重复的两个数这类算法在多个领域都有着广泛的应用,它们在确保数据的唯一性、提高处理效率以及增强安全性方面发挥着重要作用。
1、不重复的两个数:
1-1、Python:
- # 1.问题描述:
- # 给定一个数组list1[],其中除了两个数外,其他均出现≥2次,请找到并输出不重复的两个数
- # 2.问题示例:
- # 给定输入数组list1=[24, 3, 5, 6, 8, 10, 10, 11, 6, 5, 3, 24],除了8和11外,其余数字均出现了两次,因此返回[8,11]
- # 3.代码实现:
- class Solution:
- # 参数arr: 输入的待查数组
- # 返回值: 两个值的列表,内容无重复
- def two_Non_Repeating_Numbers(self, list1):
- answer = [0, 0] # 初始化数组answer
- # 对数组进行异或操作,得到所有重复数字的异或结果
- for i in list1:
- answer[0] = answer[0] ^ i # ^按位异或运算符:两个数二进位相异时,结果为1;反之,结果为0.
- # 找到第一个为1的位
- c = 1
- while c & answer[0] != c: # &按位与运算符:两个数二进位相同且为1时,结果为1;反之,结果为0.
- c = c << 1 # <<左移动运算符:运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0.
- # 根据该位来区分两个非重复数字,并更新answer数组
- for i in list1:
- if i & c == c:
- answer[1] = answer[1] ^ i
- # 更新answer数组的第一个元素
- answer[0] = answer[0] ^ answer[1]
- # 返回结果
- return answer
- # 主函数
- if __name__ == '__main__':
- # 定义输入的数组arr
- arr = [24, 3, 5, 6, 8, 10, 10, 11, 6, 5, 3, 24]
- # 调用函数并打印结果
- solution = Solution()
- print("数组为:", arr)
- print("两个没有重复的数字是:", solution.two_Non_Repeating_Numbers(arr))
- # 4.运行结果:
- # 数组为: [24, 3, 5, 6, 8, 10, 10, 11, 6, 5, 3, 24]
- # 两个没有重复的数字是: [8, 11]
1-2、VBA:
- Rem 自定义函数,功能:不重复的两个数
- Function TwoNonRepeatingNumbers(arr() As Variant) As Variant
- Dim answer(1) As Variant
- Dim i As Long
- Dim c As Long
-
- '初始化answer数组
- answer(0) = 0
- answer(1) = 0
-
- '对数组进行异或操作,得到所有重复数字的异或结果
- For i = LBound(arr) To UBound(arr)
- answer(0) = answer(0) Xor arr(i)
- Next i
-
- '找到第一个为1的位
- c = 1
- While (c And answer(0)) <> c
- c = c * 2
- Wend
-
- '根据该位来区分两个非重复数字,并更新answer数组
- For i = LBound(arr) To UBound(arr)
- If (arr(i) And c) = c Then
- answer(1) = answer(1) Xor arr(i)
- End If
- Next i
-
- '更新answer数组的第一个元素
- answer(0) = answer(0) Xor answer(1)
-
- '返回结果
- TwoNonRepeatingNumbers = answer
- End Function
-
- Rem 执行过程,功能:调用自定义函数TwoNonRepeatingNumbers,在立即窗口输出结果.
- Sub TestRun()
- Dim arr() As Variant
- Dim solution As Variant
-
- '定义输入的数组
- arr = Array(24, 3, 5, 6, 8, 10, 10, 11, 6, 5, 3, 24)
-
- '调用函数并打印结果
- solution = TwoNonRepeatingNumbers(arr)
- Debug.Print "数组为:" & Join(arr, ", ")
- Debug.Print "两个没有重复的数字是:" & solution(0) & ", " & solution(1)
- End Sub
- '数组为:24, 3, 5, 6, 8, 10, 10, 11, 6, 5, 3, 24
- '两个没有重复的数字是:8, 11
注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。
2、相关文章:
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:



评论记录:
回复评论: