原文:https://lwebapp.com/zh/post/l...题给你一个长度为n的整数数组nums,其中nums中的所有整数为在[1,n]范围内,每个整数出现一次或两次。请找到所有出现两次的整数并将它们返回到一个数组中。你必须设计并实现一个算法,在O(n)时间内解决这个问题,并且只使用恒定的额外空间。示例1:输入:nums=[4,3,2,7,8,2,3,1]输出:[2,3]示例2:输入:nums=[1,1,2]输出:[1]示例3:输入:nums=[1]输出:[]提示:n==nums.length1<=n<=1051<=nums[i]<=nnums每个元素出现一次或两次原文:https://lwebapp.com/zh/post/l...更多刷题注意事项:https://lwebapp.com/zh/tag/le...解决思路之一:利用Setvalue的独特特性不断Add将nums中的数字转成一个空的Set,然后通过set.add方法获取set的长度是否增加来判断是否有重复的数字。代码:/***@param{number[]}nums*@return{number[]}*/varfindDuplicates=function(nums){constset=newSet()//唯一值测试constresult=[]//结果数组nums.forEach(n=>{constpreSize=set.size//使用set.add方法通过获取set的长度是否增加来判断是否有重复数set.add(n)//查找重复数字if(preSize===set.size){result.push(n)}})returnresult};第二种解法思路:遍历整个数组,把每一个数作为数组位置信息,然后将每一个位置对应的数倒转,变成负数,相当于做一个标记,说明这个数对应的位置已经被号码占用。如果下次发现这个数字是负数,就说明它已经出现了。比如[4,3,2,7,8,2,3,1],走到第2个时,将位置为1的数字3翻转为-3,走到下2个时,你可以找到位置1的数字是-3,已经翻转了,说明数字2出现了两次。代码:/***@param{number[]}nums*@return{number[]}*/varfindDuplicates=function(nums){letresult=[];for(leti=0;i
