每日JavaScrip - 15(简单算法)

给定一个数组,能组成三角形返回最大周长,否则返回0(不可重复取值)

const arr = [2, 3, 4, 5, 10]

function solve(arr) {
	const len = arr.length
	let tri_len
	let longest
	let rest_len
	let result = 0
	for (let i = 0; i < len; i++) {
		for (let j = i +1; j < len; j++) {
			for (let k = j + 1; k < len; k++) {
				tri_len = arr[i] + arr[j] + arr[k]
				longest = Math.max(arr[i], arr[j], arr[k])
				rest_len = tri_len - longest

				if (longest < rest_len) {
					result = Math.max(result, tri_len)
				}
			}
		}
	}
	console.log(result)
	return result
}

solve(arr)

简单记录一下问题
要求

let arr = [1, 2, 3, 4, 5, 6]
arr.mul()
// [ 1, 2, 3, 4, 5, 6, 1, 4, 9, 16, 25, 36 ]
console.log(arr)

要点有要在数组原型上添加方法,要改变this

AArray.prototype.mul = function() {
  this.push(...this.map(e => e * e))
}

Array.prototype.mul = function() {
  this.forEach( e => this.push(e ** 2))
}

蚂蚁问题
Ants

const arr = [2, 6, 7]
const L = 10

function solve(arr, L) {
  let min = 0
  let max = 0
  const len  = arr.length
  for (let i = 0; i < arr.length; i++) {
    min = Math.max(min,  Math.min(arr[i], L - arr[i]))
    max = Math.max(max, Math.max(arr[i], L - arr[i]))
  }
  return [min, max]
}
console.log(solve(arr, L))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值