算法题:购买n个苹果,苹果6个一袋或者8个一袋,若想袋数最少,如何购买?
这是面试一家公司java实习生的算法题,我当时把代码写出来了,但是回学校之后搜索别人的算法,才发现自己的算法实在是太简陋了呜呜呜
我的算法:
public void buy(int n){
int min=9999;
int sum=0;
for(int i=0;i<=n/6;n++){
for(int j=0;j<=n/8;j++){
if(i*6+j*8==n){
sum=i+j;
if(sum<min){
min=sum;
}
}
System.out.println("最少购买的袋数为"+min);
}
我的思路是在 i 和 j 可能的范围内进行两次for循环,如果满足总苹果树为n,则给sum赋值,又因为要得到最少的袋数,所以紧接着用来选择排序来查找总袋数最少的情况。这个思路很死板,又要进行匹配又要进行排序。第一个可以改进的地方就是可以避免对j的循环,直接用if((n-i*6)/8==0)来代替,可以减少时间复杂度;第二个可以改进的地方就是得到最少袋数,不在得到sum之后对sum进行排序,而是从根源出发,思考如何才能使总袋数最少,于是得出思路----应该让8个一袋的袋数尽量的多。
下面是从网上借鉴的比较好的算法:
int solution(int n){
int pack8=n/8;
int pack6=0;
int pack=0;
for(pack8;pack8>=0;pack8--){
if(n-pack8*8)/6==0){
pack6=(n-8*pack8)/6;
pack=pack8+pack6;
return pack;
}
}
}
算法题:购买n个苹果,苹果6个一袋或者8个一袋,若想袋数最少,如何购买?的更多相关文章
- 认真对待每一道算法题 之 两个排序好的数组寻找的第k个大的数
转载博客:http://www.cnblogs.com/buptLizer/archive/2012/03/31/2427579.html 题目意思:给出两个排好序的数组 ,不妨设为a,b都按升序排列 ...
- LeetCode算法题-Best Time to Buy and Sell Stock II
这是悦乐书的第173次更新,第175篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第32题(顺位题号是122).假设有一个数组,其中第i个元素是第i天给定股票的价格.设计 ...
- LeetCode算法题-Best Time to Buy and Sell Stock
这是悦乐书的第172次更新,第174篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第31题(顺位题号是121).假设有一个数组,其中第i个元素是第i天给定股票的价格.如果 ...
- 一道java算法题分析
最近在面试中遇到这样的一道算法题: 求100!的结果的各位数之和为多少? 如:5!=5*4*3*2*1=120,那么他们的和为1+2+0=3这道题不算难,不过倒是注意的细节也有 ...
- FCC上的初级算法题
核心提示:FCC的算法题一共16道.跟之前简单到令人发指的基础题目相比,难度是上了一个台阶.主要涉及初步的字符串,数组等运算.仍然属于基础的基础,官方网站给出的建议完成时间为50小时,超出了之前所有非 ...
- 解决一道leetcode算法题的曲折过程及引发的思考
写在前面 本题实际解题过程是 从 40秒 --> 24秒 -->1.5秒 --> 715ms --> 320ms --> 48ms --> 36ms --> ...
- js 中的算法题,那些经常看到的
js中遇到的算法题不是很多,可以说基本遇不到.但面试的时候,尤其是一些大公司,总是会出这样那样的算法题,考察一个程序员的逻辑思维能力.如下: 1.回文. 回文是指把相同的词汇或句子,在下文中调换位置或 ...
- JavaScript算法题之–随机数的生成
JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2 ...
- 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。
简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...
随机推荐
- IDEA优化配置,提高启动和运行速度
IDEA优化配置,提高启动和运行速度 参考链接:https://blog.csdn.net/riju4713/article/details/83217013,http://www.pc0359. ...
- shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机
shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...
- [译]使用Pandas读取大型Excel文件
上周我参加了dataisbeautiful subreddit上的Dataviz Battle,我们不得不从TSA声明数据集创建可视化.我喜欢这种比赛,因为大多数时候你最终都会学习很多有用的东西. 这 ...
- Python - Django - ORM 常用的字段属性
字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置 ...
- LeetCode_206. Reverse Linked List
206. Reverse Linked List Easy Reverse a singly linked list. Example: Input: 1->2->3->4-> ...
- 方法重载overload与方法重写overwrite
方法重载overload: 在同一个类中,出现相同的方法名,与返回值无关,参数列表不同:1参数的个数不同 2参数类型不同 在调用方法时,java虚拟机会通过参数列表来区分不同同名的方法 方法重写ove ...
- 特征抽取: sklearn.feature_extraction.DictVectorizer
sklearn.featture_extraction.DictVectorizer: 将特征与值的映射字典组成的列表转换成向量. DictVectorizer通过使用scikit-learn的est ...
- PCA分析的疑问
R 与python scikit-learn PCA的主成分结果有部分是反的 通过R和python分别计算出来的PCA的结果存在某些主成分的结果是相反的,这些结果是没有问题的,只是表示这个分量被反转了 ...
- 软件素材---linux C语言:linux下获取可执行文件的绝对路径--getcwd函数
//头文件:#include <unistd.h> //定义函数:char * getcwd(char * buf, size_t size); //函数说明:getcwd()会将当前的工 ...
- [转帖]Hadoop、Hive、Spark 之间关系
Hadoop.Hive.Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程 ...