题目:(先思考,再往下看)从无头链表中删除节点。假设有一个没有头指针的单链表。一个指针指向此链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除---《编程之美》参考:单链表反转《算法之美》の链表问题の从链表中删除节点代码待续。。。。。。
分类:
其他好文 时间:
2014-11-20 20:19:51
阅读次数:
150
对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢?解法:最简单的是扫描一遍数组,需要比较2*N次才能求解。解法二:首先在概念上把连个相邻的数分在同一组,只是想象而已,无须任何操作。然后比较同一组的奇数位数字和偶数位数字,将较大的数放在偶数位上,较小的数放在奇数位上。N/2次比...
分类:
编程语言 时间:
2014-11-19 07:11:09
阅读次数:
207
题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0.解法:原问题转化为求一个最小的正整数X,使得X的十进制表示形式里只含有1和0,并且X被N整除。于是乎就成了遍历二进制整数一样遍历X的各个取值,但是如果X的最终结果又K位,则要循环搜索2K次。因此,可...
分类:
其他好文 时间:
2014-11-18 00:02:04
阅读次数:
199
求两个很大的数的最大公约数问题。解法一:辗转相除法,但当数很大时,取模运算很耗时间。解法二:利用f(x,y) = f(x-y, y)可以避免取模,但是当第一个数很大,而第二个数很小如1时,也比较耗时。解法三:对于y和x来说,如果y=k*y1, x= k*x1,那么f(y,x)=k*f(y1,x1)。...
分类:
其他好文 时间:
2014-11-16 23:03:37
阅读次数:
219
题目:给定一个目标区间[x,y]和N个无序的源区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。思路:把源区间按x从小到大排序,再把区间依次合并,每完整得到一个合并区间后,判断[x,y]是否在合并区间内。#include #include typed...
分类:
其他好文 时间:
2014-11-13 20:26:56
阅读次数:
288
题目:一个有N个元素的数组 循环右移k位 要求时间复杂度O(N) 只允许两个附加变量abcd1234 循环右移4位 变成 1234abcd做过 思路 (ATBT)T = BA注意,K可能比N大,K也可能是负数(左移),要注意取余处理!!#include #include void exchange(...
分类:
编程语言 时间:
2014-11-13 00:15:07
阅读次数:
234
问题:1,写一个函数f(N),返回1到N之间出现的”1"的个数。2,满足条件“f(N)=N"的最大的N是多少?解法:对于之间的每一个数字n,分情况讨论每一个数位出现1的个数,例如要计算百位上出现1的次数,它将会受到三个因素的影响:百位上的数字,百位以下(低位)的数字,百位(更高位)以上的数字。如果百...
分类:
其他好文 时间:
2014-11-10 23:08:31
阅读次数:
257
做过的,就说下思路。用Sum记录A[0...N-1]中 以第i个元素结尾的子数组中的最大和,若以第i-1个元素结尾的子数组小于0,那么以第i个元素结尾的子数组中的最大和就是 A[i]本身 否则是A[i] + Sum(i-1的)总结起来就是 Sum = (Sum > 0) ? A[i] + Sum :...
分类:
编程语言 时间:
2014-11-10 15:16:32
阅读次数:
224
思路,有了一维的思路,我们想办法把二维问题转化为一维的问题。我们假定已经选中了行的范围是 a-c 那么把每一列中 a-c的元素加起来就变成了一个一维的问题。只需对行的范围遍历,再用一维的方法来解就可以了。注意,也可以对列的范围遍历,行和列那个小就对哪个遍历。 复杂度为O(M * N * min(M,...
分类:
编程语言 时间:
2014-11-10 15:10:29
阅读次数:
149
题意:在一堆ID号中,有一个ID出现的次数大于总数的一半,如何快速找出那个ID。我自己的想法是,如果ID号不是很大,用hash来存储每一个ID号出现的次数,出现一次,hash[ID]++,然后和max值比较,若大,则更新max值,复杂度为o(n)。书上一个好的解法是:每次删除两个不同的ID(不管是否...
分类:
其他好文 时间:
2014-11-09 23:33:48
阅读次数:
260