前端面试可能遇见的程序大题 一(求和)?附思路及代码答案。
题目. 设计一个算法,将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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通