题目:
写一个函数,返回一个数组中所有元素被第一个元素除的结果;
错误的版本:
void DivArray(int *array, int n)
{
for (int i = 0; i < n; ++i)
{
array[i] /= array[0];
}
}
错误原因:在循环的第一步,第一个元素就变成了1,然后再用它去除以其他元素,就不符合题目要求了...
分类:
编程语言 时间:
2015-07-25 12:25:45
阅读次数:
136
本文是对一篇英文论文的总结:Finding Repeated Elements。想看原文,请Google之。这个问题的简单形式是“查找出现次数大于n/2的重复元素”。我们先从简单问题开始,然后再做扩展。1.查找出现次数大于n/2的重复元素 《编程之美》中有同样的一道题《寻找发帖水王》,具体思路是每....
分类:
其他好文 时间:
2015-07-23 17:27:18
阅读次数:
155
将解决这个问题的整个过程记录下来:
1、首先我以[2,3,6,7,9] 9为例研究了一下可行解,在小规模情况下目测可行解为
[[9], [2,7],[3,6]],我就想如何按照某种规则来搜索出这些可行解呢,此时我想到用于找零问题的贪婪算法,将可行解集合按照贪婪算法重新整理为,[9],[7,2],[6,3]。
2、此时开始想到排列树,编程之美3.2节,发现在排列树上进行贪婪算法是可行的。3、接下...
分类:
其他好文 时间:
2015-07-22 18:52:59
阅读次数:
106
解决这道题的算法:
第一步:对数组进行,以快速寻找满足条件的两个数。
第二步:首先对于a[0],j指向其后第一个,k指向最后一个;如果 a[j] + a[k] -a[0], k–;这样只需o(n)的时间效率就可以扫描完整个数组,具体理论可以参考编程之美2.12快速寻找满足条...
分类:
其他好文 时间:
2015-07-16 14:09:09
阅读次数:
93
把前一个问题扩展了一下,寻找二维数组中,从(x1, y1)到(x2, y2)确定的矩形区域的数据之和最大值。解法一给出了一个技巧,建立一个和原数组一样大的数组,用来保存(0, 0)到(x, y)的和,即P[x][y] = sum(x[0][0] –> x[x][y])。然后用Sum = PS[i_m...
分类:
编程语言 时间:
2015-07-16 13:19:47
阅读次数:
142
二分查找的思想很好理解,但要写出没有bug的代码却并不是件容易的事。对于有序数组的二分查找,可以遵循一些套路快速写出无错代码。下面先给出二分查找有序数组的一些问题,所有问题参考了《编程之美》。1、给定非降序数组A,求任意一个i使得A[i]等于target,如不存在则返回-1。2、给定非降序数组A,求...
分类:
其他好文 时间:
2015-07-14 17:04:41
阅读次数:
135
这个问题是目前正在寻求 n-1 最大的产品编号。该数组的大小 n。它会存在 n 一个 n-1 连续数。然后,我们需要找到一个最大的产品。 事实上看到题目,感觉非常easy,循环走两遍数组就能够得到结果,可是,那样的话,复杂度是平方量级的,假设一个数组中元素非常多。那么,时间效率上是不能接受...
分类:
其他好文 时间:
2015-07-08 22:21:19
阅读次数:
148
《编程之美》中求二叉树中节点的最大距离的另一种非侵入解法...
分类:
其他好文 时间:
2015-07-08 00:38:52
阅读次数:
122
题记:这道题和《编程之美》一书中2.18节的数组分割区别不大,但本人觉得《编程之美》这一节讲的不够透彻,不好理解(或许本人愚钝),故给出自己的思路,同时也给出打印其中一种方案的方法(这一点《编程之美》并没有提到)。两个序列大小均为n,序列元素的值为任一整数,无序;要求通过交换两个序列的元素,使序列a...
分类:
编程语言 时间:
2015-07-08 00:26:04
阅读次数:
157
在《编程之美》一书中有一节提到如何求一个字节的无符号整型变量二进制表示中1的个数,主要提到了四种方法。下面简单介绍一下:1.求余法在将十进制数转换为二进制数时,采用除2取余法。将每次除2得到的余数保存起来逆序输出便是该十进制整数的二进制表示。因此可以采用这种方法去统计1的个数。intcount(un...
分类:
其他好文 时间:
2015-07-06 14:12:38
阅读次数:
99