08 2013 档案

摘要:问题:数组a1[0, mid-1]和a1[mid,num-1]都分别有序。将其merge成有序数组a1[0,num-1],要求空间复杂度为O(1),时间复杂度为O(n). 问题来自:http://blog.csdn.net/column/details/ms100.html 这个问题的关键点就是在于:如何降低空间复杂度。解决关键:考虑左边数组与右边数组交换元素的个数。若左边数组在交换过程中,还有剩余元素没有交换。也就是说,左边数组剩余数组元素还是大于已交换元素的。 例如,{ 1, 2, 23, 24, 36, 74, 7, 10, 12, 38, 44, 84 }, mid = 6 ... 阅读全文
posted @ 2013-08-30 10:16 life91 阅读(250) 评论(0) 推荐(0)
摘要:问题出自blog:http://blog.csdn.net/v_july_v/article/details/6803368 问题描述:有n个正实数(按照大小升序排列),另一个实数m。需要算出若干个x,使这个几个x的和与m最接近。请描述实现算法啊,并指出算法复杂度。 利用贪婪算法,从后向前仅考虑当前计算结果最接近实数m的值,时间复杂度O(n) 源代码: 1 #include 2 #include // for srand(), rand() 3 #include // for time() 4 5 int which_sum_is_near_number( co... 阅读全文
posted @ 2013-08-22 15:31 life91 阅读(231) 评论(0) 推荐(0)
摘要:问题出自blog:http://blog.csdn.net/v_july_v/article/details/6803368 问题:高效统计一篇英文文章里出现的所有单词,按照在文章中首次出现的顺序打印出该单词和它出现的次数。 解决方式:利用Trie完成单词匹配,然后利用链表来统计单词出现的个数。 源代码: 1 #include 2 #include // for calloc(), free() 3 #include // for strlen(), memset() 4 5 enum { BranchSize = 26, StringSize ... 阅读全文
posted @ 2013-08-21 10:31 life91 阅读(1158) 评论(0) 推荐(0)