问题1: 给定一棵二叉树,要求从上到下从左到右分层输出该二叉树的节点值。 问题2: 从左到右输出二叉树中某一层的节点值。 分析与解法: 【解法一】 使用递归的方法。先解问题2,然后用问题2的解法依次遍历其各层节点。于是假…
分类:编程之美
《编程之美》——不要被阶乘吓倒
问题: 给定一个整数N,求N!末尾的0的个数。 求N!的二进制表示中最低位1的位置。 分析与解法: —— 问题1 【解法一】 计算因式分解中5的指数,再求和。 代码: int zeroNum(int N) { int n…
《编程之美》——寻找发帖“水王”
问题: 论坛中“水王”发帖的数目超过了帖子总数的一半,如果有当前论坛所有帖子的列表,求“水王”的ID。 分析与解法: 一般的想法是根据ID对列表排序,若编号从0开始第N/2个ID即为“水王”的ID。这种方法的时间复杂度即…
《编程之美》——寻找最大的K个数
题目: N个无序的数(可能数目非常大),选出其中最大的K个数。 分析与解法: 【解法一】 对N个数进行排序,然后选出最大的K个数。可以使用快速排序或堆排序,时间复杂度为O(NlogN)。 因为这里N的数目可能非常大,即N…
《编程之美》——最大公约数问题
问题: 求两个正整数的最大公约数,假设两个正整数都很大。 分析与解法: 【解法一】 x与y的最大公约数与x对y的余数的最大公约数是相同的,即f(x, y) = f(y, y%x),可以把原问题转化为求两个更小数的最大公约…
《编程之美》——寻找最近点对
问题: 给定平面上两个点的坐标,找出距离最近的两个点。 分析与解法: 一般思路是蛮力算法,两两求N个点之间的距离并比较,得出最大距离,时间复杂度为O(N^2)。 优化算法是采用分治的思想,将N个点先按照 x 轴的坐标的中…
《编程之美》——数组分割
问题: 将一个无序、元素个数为2N的正整数数组分割为元素个数为N的两个数组,并使两个子数组的和最接近。 分析与解法: 【解法一】 动态规划的0-1背包问题。将heap[M](M表示从2N中所有可能的M个元素和组成的集合)…
最美丽的编程语言Scheme——基本表达式
Scheme被很多人誉为“世界上最美丽的编程语言”。偶也被他们的话所打动,于是乎开始了Scheme之旅。 目前Scheme大多用于科研,商用的比较少。但即便如此,也丝毫不会影像其“美丽”。 下面就请大家一起跟我走进Sch…
【编程之美】中国象棋将帅问题
问题描述 在中国象棋里将和帅是不能碰面的,如下图所示,当将位于d10时,帅就不能在d1,、d2、d3。请写一个程序,输出将、帅所有的合法位置。要求在代码中仅用一个变量。 如果只是输出将、帅的合法位置,那这题就比较容易了,…
Java并发编程之美系列汇总
Java并发编程之美系列汇总,大家可以挑选自己感兴趣的的进行订阅。 Java 并发编程之美:线程相关的基础知识 http://gitbook.cn/gitchat/activity/5aa4d205c2ff6f2e120…
Java并发编程之美
一、前言 并发编程相比 Java 中其他知识点学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/高流量的系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。本书将通过图…
Java并发编程之美-勘误
http://www.broadview.com.cn/book/5865