156>算法笔试模拟题精解之“简单题?”算法笔试模拟题精解之“简单题?”贡献者 | 郭达彬简介:二分法的核心在于,每次操作都让问题的复杂度减小为原来的一半。题目描述题目等级:容易知识点:数学查看题目:简单题?有一个 1~n(1<=n<=100)的集合 ,现在可以让你在集合中选择任意多个数去减去一个正整数 x(x 是任意数 ),问最少需要操作多少次可以使这个集合中的数都变为 0 ?输入一个数 n(1<=100),表示集合中的数据数量输出最少的操作数示例 1输入:2输出:2算法笔试模拟题精解之“简单题?” <157解题思路:二分法(减治法)思路如下:二分法的核心在于,每次操作都让问题的复杂度减小为原来的一半。若有一个 1~n 的集合,可以让集合中大于 n/2 的数同时减去 n/2,减完后发现所有的数会变成一个 1~n/2 的集合,也就是一次操作后整个问题的复杂度变为了原来的一半。继续同样的操作,直至问题的复杂度为 0,统计这个过程中二分操作的次数即可得出最少的操作数。时间复杂度:O(log_2 n)空间复杂度:O(1)看完之后是不是有了想法了呢,快来练练手吧 >> 查看题目:简单题?
目录
157
0
收起右侧 展开右侧
程序员面试宝典 > 算法笔试模拟题精解之“简单题?”
  • 读书笔记
    我的笔记
    暂无相关笔记,快来写一篇吧!
点击浏览下一章>>