这种问题以及方法很常见。主要是思路要开阔,讲已知的问题抽象成数学模型或者函数表达式,这正是数学建模的真谛,problem solving(解决实际问题的能力)。法一:利用计数排序,用数组记下每个ID出现的次数,然后找出出现一次的那个ID,时空复杂度都是O(N)。现在如果数据量很大,那么这样的空间复杂度是无法被容忍的法二:利用两个相同的数异或结果为0,将所有的ID都异或一遍,显然最后剩下的值,即为出现...
分类:
其他好文 时间:
2015-04-29 17:12:47
阅读次数:
143
题目链接:codeforces 301D题意分析:
给你n , m两个数,1?≤?n,?m?≤?2e5,n代表n个不同数字,且这些数字都在区间[ 1 , n ]之间,这就说明1~n每个数出现一次。m代表m次查询,查询格式为两个整数x , y,问你区间[ x , y ]之间有多少对数a , b满足a%b==0。解题思路:
考察点是区间的频繁访问,马上想到线段树和树状数组,线段树太难写了没考虑过,就...
分类:
编程语言 时间:
2015-04-29 15:13:13
阅读次数:
228
欧拉函数
欧拉函数,对于正整数n,欧拉函数就是小于或者等于n的数中与n互质的数的数目。
通式为:
F(x) = x * (1 - 1 / p1) * (1 - 1 / p2) * ....... * (1 - 1 / pn);p1,p2,p3.....pn为x的质因子。每一质因子只出现一次。即p1 ≠ p2 ≠ ....pn; 例如12 = 2 * 2 * 3;2只能算一次。
有了这个欧拉...
分类:
其他好文 时间:
2015-04-28 16:15:59
阅读次数:
118
100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。 题目要求: 从标准输入读入一个正整数N (...
分类:
其他好文 时间:
2015-04-27 18:17:39
阅读次数:
3299
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路我们直到异或的性质:任何一个数字异或他自己都等于0.
所以说我们如果从头到尾依次异或每一个数字,那么最终的结果刚好只出现一次的数字,因为成对出现的两次的数字全部在异或中抵消了。这道题中有两个数字只出现一次。这样的话我们得到的结果就是这两个数字的异或结果。因此我们想办法把原数组分成两个子数组,使得每个子...
分类:
编程语言 时间:
2015-04-26 19:47:36
阅读次数:
120
问题:一个整数数组里除了两个数之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n), 空间复杂度为O(1).(2012百度)#includeusing namespace std;int findFirst1(int num){ int n=0; while((...
分类:
编程语言 时间:
2015-04-25 18:11:57
阅读次数:
144
题目描述:
假设 你用一个1001个整数组的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间,此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个整数做一次处理,用一种算法找出重复的那个数字。(不用辅助的存储方式)
1.sum up all the number,then subtract the sum from 1001...
分类:
编程语言 时间:
2015-04-24 14:26:25
阅读次数:
127
Single Number I给定一个数组,除了一个元素出现一次之外,其余的元素都出现两次。找出这个元素分析:只要将所有的元素都异或一次,最后的结果就是这个出现一次数。代码:int singleNumber(int A[], int n) {
int num;
int i;
num=A[0];
for(i=1;i<n;i++)
{
num=nu...
分类:
其他好文 时间:
2015-04-24 12:44:02
阅读次数:
168
find the first unique character in a string and you can just traverse this string only one time. if there is no such character, just return '#' and '#' will not appear in the string, else return the ...
分类:
其他好文 时间:
2015-04-21 22:53:16
阅读次数:
167
给定一个包含n个整数的数组,除了一个数出现一次以外,其他数均出现两次,找出这个出现一次的整数思路:运用异或运算,暴力,快速……public class SingleNumber { public static int singleNumber(int[] A) { ...
分类:
其他好文 时间:
2015-04-21 20:06:14
阅读次数:
103