前端面试可能遇见的程序大题 一(求和)?附思路及代码答案。

题目. 设计一个算法,将1000个随机数放到一个数组里,找出任意相邻的5个(最多5个数,可以少于5个)随机数相加的和大于1000的数。

1 思路:使用双层循环去遍历这个1000个数的数组,每遍历一个数并求和判断是否满足条件,满足则输出。需要注意的是内循环的判断条件与外循环的变量关系,以及注意循环变量是否下标越界,遇到这种情况如何解决。

2 实现代码(html & js)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>求和问题</title>
</head>
<script type="text/javascript">
var s = []
var result = [] //存放满足条件的相邻的数
var obj = [] //每一个满足条件的暂存在这里
//获取1000个随机整数,放入数组s
function getRandomArr(start, end) {
return Math.floor(Math.random() * (end - start + 1) + start) //向下取整
}
for (k = 0; k < 1000; k++) {
let a = getRandomArr(0, 2000) //随机数范围在[0-2000]
s.push(a)
}
console.log('随机数数组', s)

for (i = 0; i < 1000; i++) {
obj = []
var sum = 0; // 定义一个和
for (j = i; j < i + 5; j++) {
if (j == s.length) {
break;
}
sum = sum + s[j]
obj.push(s[j])
if ((sum > 1000)) {
result.push(JSON.stringify(obj))
}
}
}
console.log('满足条件结果', result)
</script>
<body>

</body>
</html>

posted @   七一七呀  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示