【算法 】判断数组元素是否成对出现

给你一个整数数组。您的任务是创建它们的对,使得每对由相等的数字组成。每个数组元素只能属于一对。是否可以使用所有的整数?
写一个函数:
函数解(A)

如果数组A包含N个整型数,返回是否有可能将所有整型分拆成对使用。

  1. 给定A=[1,2,2,1],您的函数应该返回True,因为它们是(A[0])。A[3])(两者都有1)和(A[1])。A[2])(两者都有值2)
  2. 给定A=[7,7,7],你的函数应该返回False,因为你可以生成一对数字7,但你仍然有一个数字7
  3. 如果A=[1,2,2,3] 你的函数应该返回 False,因为A并没有什么值[0]可以搭配

为以下假设写一个有效的算法:

数组A的每个元素都是一个范围-1,0000010000]的整数。

解题思路:

跟判断括号是否成对出现有点类似
1.创建一个用来存放数组的栈,
2.循环数组,判断当前字符是否存在在栈中
3.如果存在就删掉这个元素,
4.最后判断栈中元素个数,大于1的话表示元素不是成对出现

function isDoubleStr(arr) {
	const n = arr.length;
	const stack = [], res = false
	if(len % 2 > 1) {
		return false
	}
	arr.forEach(item => { 
		let index = stack.indexOf(item) 
		if (index > -1) {
			stack.splice(index, 1)
		} else {
			stack.push(item)
		}
		
	})
	if(stack.length >= 1) {
		return false
	} else {
		return true
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_38318244/article/details/124688259
今日推荐