题解 | #买橘子#
买橘子
https://www.nowcoder.com/practice/73e0552b78474a9086781e47f4e01d73
首先一定是每袋8个装的越多最终需要买的袋数就越少
所以循环从买0袋6六个装的开始迭代,第一个满足条件的一定就是最优解。
时间复杂度O(n),空间复杂度O(1)
如果从买0袋八个装的开始迭代,需要循环结束,数组的最后一位元素才是最优解
时间复杂度O(n),空间复杂度O(n)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let line = await readline()
console.log(fn(line))
}()
function fn(n){
if(n < 6 || n % 2 !== 0) return -1
//从到买0袋6个装开始
for(i = 0;i < n/6 ;i++){
let _n = n-(i*6)
if(_n % 8 === 0){
return i + _n/8
}
}
return -1
//从到买0袋8个装开始
//let res = []
//for(i = 0;i < n/8 ;i++){
// let _n = n-(i*8)
// if(_n % 6 === 0){
// res.push(i + _n/6)
// }
//}
//return res[res.length-1]
}

传音控股公司福利 360人发布