原文:一个整型数组里除了一个或者两个或者三个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)

粗糙的给出了分析,最近比较累,以后会改进的。 题目中包括三个小的问题,由简单到复杂: ,如果只有一个出现一次,考察到异或的性质,就是如果同一个数字和自己异或的活结果为零,那么循环遍历一遍数组,将数组中的元素全部做异或运算,那么出现两次的数字全部异或掉了,得到的结果就是只出现一次的那个数字。 ,如果有两个只出现一次的数字,设定为a,b。也是应用异或,但是数组元素全部异或的结果x a b,因为a,b ...

2015-05-01 09:15 0 2374 推荐指数:

查看详情

一个整型数组里除了两个数字之外,其他的数字都出现两次程序找出这两个出现一次数字

一、题目:   一个整型数组里除了两个数字之外,其他的数字都出现两次程序找出这两个出现一次数字。例如数组为{1,3,5,7,1,3,5,9},找出7和9。 二、解答: 1、运用异或运算符的解法   我们先考虑上述问题的简单版本: 一个数组里面只有一个数字出现一次,其他都出现 ...

Mon Sep 18 10:33:00 CST 2017 1 6884
给定一个长度为N数组找出出现次数大于n/2,n/3的数,要求时间复杂度On),空间复杂度O(1)

  先讨论出现次数大于n/2的数字,如果这样的数字存在,那么这个数出现的次数大于其他数出现的次数的总和。 在数组A中,我们定义两个数据集合a1,a2。a1为出现次数大于n/2的数的集合,a2为其余数组成的集合。对于数组 A中元素a、b,假设a不等于b,那么有种情况,分别为:a属于a1,b属于 ...

Fri Nov 01 04:59:00 CST 2019 0 300
两个有序数组合并成一个有序数组(要求时间复杂度O(n))

面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组。 2.把小元素所在的数组中的这个元素删除。 3.继续比较两个数组中的首 ...

Tue Mar 12 19:15:00 CST 2019 0 1891
找出数组两个出现一次数字

Q:一个整型数组里除了两个数字之外,其他的数字都出现两次程序找出这两个出现一次数字要求时间复杂度O(n),空间复杂度O(1)。 A:将数组的每一个元素进行异或,得到的两个不同数字之间的异或,因为这两个数字不同,所以异或值必然不为0,所以我们找出异或值的一个为1的数位 ...

Mon Jun 18 18:14:00 CST 2012 0 3228
如何对n个整数数进行排序,要求时间复杂度O(n),空间复杂度O(1)

题目:如何对n个不重复出现的整数序列进行排序,已知这些数的范围为(0-65535),要求时间复杂度O(n),空间复杂度O(1) 分析: 可以申请一个大小为65536的数组A,数组的x下标代表数字x,A[x]代表x 在整数序列中出现的次数。扫描一遍整数序列就可以完成对该整数序列的排序,时间复杂度 ...

Fri Mar 16 03:53:00 CST 2012 2 5944
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM