逻辑
ISSUE1:
29只青蛙29分钟吃29只蚊子, 87分钟吃87只蚊子需要多少青蛙?
// 一只青蛙29分钟吃一只蚊子,那么一直青蛙87分钟可以吃3只蚊子
// 总共要只87只蚊子87 / 3 >>> 29
ISSUE2:
一个人花8块钱买了一只鸡, 9块钱卖掉了, 然后他觉得不划算,话10块钱又买了回来, 11块卖给另一个人, 问他赚了多少?
ISSUE3:
一天, 张三的店里来了一个顾客, 挑了25元的货, 顾客拿出100元,张三没零钱找不开,就到隔壁李四的店里把这100元换成零钱,回来后找了75元,李四来找张三说刚才的是假钱,张三马上给李四换了张真钱,问张三赔了多少?
// 首页我们把问题分开解析,先从换钱开始,假设我提前知道我没有零钱,我先找李四换了100块的零钱,。
这次给的可是100的真钱,他给我100零钱。之后我和李四就没什么联系了。
// 然后顾客来买东西,拿了我25元的货,我又找给他75元。从我手中流出的资金就只有25 + 75.
ISSUE4:
如果20分钟前离上午9点的分钟数, 等于现在离上午12点的分钟数的3倍,那么,现在离上午12点还有多少分钟?
ISSUE5:
两个袋子中各有4个白球,4个黑球,现在,我分别从两个袋子中取出一个球。请问,在我所取出的球中,至少有一个是黑球的几率有多大?
ISSUE6
有一堆核桃,如果5个5个的数,则剩下4个,4个4个的数,则剩下3个,3个3个的数则剩下2个,2个2个的数剩下1个那么这堆核桃至少有多少个?
// 从中可以找出一个规律,剩下的核桃比抓取的数少一个。当这个规律形成时,我们可以假设,如果我在这堆核桃+1那么他们都可以被个之整除
// 然后就可以用最小公倍数解决
ISSUE6-1
一框鸡蛋1个1个拿,正好拿完。2个2个拿,还剩1个。3个3个拿,正好拿完。4个4个拿,还剩1个。5个5个拿,还剩一个。6个6个拿,还剩3个。7个7个拿,正好拿完。8个8个拿,还剩1个。9个9个拿,正好拿完。
// 首先找规律,可以看到3、7、9是可以直接拿完这堆鸡蛋的。所有这堆鸡蛋的数量是一个能被3、7、9整除,那么这个数的最小公倍数等于63
// 然后通过2个2个拿的还剩一个,那么这个数是个奇数。通过5个5个的拿还剩1个,判断出这堆鸡蛋的各位数是1或者6。通过前一个条件判断这个个位数是1
// 判断了个位数是1, 那么这个数的倍数个位数是7的数。63 * (n * 10 + 7) = 441 + 630 * n
// 最后根据4个4个拿 和 8个8个拿,还剩一个 说明441 - 0 余 1 说明630能被4和8整除,说明n的公倍数中有8。
所以最后
441 + 630 * 0 = 1071
441 + 630 * 4 = 2961
441 + 630 * 8 = 5481
ISSUE7
假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
// 首先用灌满5升水壶, 然后将5升水壶灌入6升水壶,6升水壶中有5升水
// 然后再将5升水壶灌满, 然后将6升水壶灌满, 5中还剩4升水
// 最后将6升水壶中的水倒掉,将5升水壶中的水全灌入, 再将5升水壶的水灌满倒入6升水壶至满。那么5升水壶中的水就只是3升
技术
ISSUE1
查找出一个整数数组中第二大的整数
var aa = [1,3,5,2,7,6]
function secondToLast(data) {
let max = Math.max(...data)
data[data.indexOf(max)] = null
return Math.max(...data)
}
console.log(secondToLast(aa)) // 6
ISSUE2
写个迭代函数, 要求打印出对象中从name值
var json = {
id: 'id1',
name: 'name1',
children: [
{
id: 'id21',
name: 'name21',
children: [
{
id: 'id31',
name: 'name31'
}
]
}, {
id: 'id41',
name: 'name41',
}
]
}
function method1(data) {
console.log(data.name)
if (data.children && data.children.length > 0) {
data.children.forEach(item => {
method1(item)
})
}
}
function method2(data) {
let item = null
console.log(data.name)
for (item in data) {
if (data[item] instanceof Array) {
data[item].forEach(_item => {
method2(_item)
})
}
}
}
method1(json)
method2(json)