简单的有关数组和函数的算法题

19 篇文章 0 订阅

1.给定一个数组arr=[2,5,7,11],target=9,要求实现数组中的任意元素相加之和等于target并输出下标 返回下标返回到数组中就可以

var arr = [2, 6, 7, 8], target = 9;
function twoSum (arr, target) {
  for (i = 0; i < arr.length; i++) {
    for (j = i + 1; j < arr.length; j++) {
      if (arr[i] + arr[j] == target) {
        return [i, j]
      }
    }
  }

  return [-1, -1]
}
var res = twoSum(arr, target);
console.log(res);

 在这里封装了一个方法,方法里面利用了两层for循环来遍历数组中的元素,再利用for循环将符合条件的元素选择出来,放到新的数组里面,如果没有符合条件的元素则返回的是【-1,-1】的数组,最后通过调用函数就能得到结果。

 2.实现100-1000以内水仙花数

首先我们得知道什么是水仙花数  像这样:百位*百位*百位+十位*十位*十位+个位*个位*个位=水仙花数

var a = 0, b = 0, c = 0;
sum = 0;
count = 0;
for (i = 100; i < 1000; i++) {
  a = parseInt(i / 100);
  b = parseInt(i % 100 / 10);
  c = parseInt(i % 10);
  sum = a * a * a + b * b * b + c * c * c
  if (sum == i) {
    count++;
    console.log(i);
  }

}
console.log("水仙花的数量为:", count)

这个算法当中先定义三个变量用来分别接收个十百位上的数,还有一个sum用来接收三个位数上的三次幂之和,count用来表示水仙花数的数量

再利用for循环对100-1000之间的数进行遍历,分别得到个位,十位,百位上的数,找到符合条件的输出

3.给出一个字符串 输出最长单词的长度

var str = 'i love china hhhhhhhhh'
var max = 0;
//将字符串的的str转化为数组
var str1 = str.split(" ")
console.log(str1)
for (i = 0; i < str1.length; i++) {
  if (str1[i].length > max) {
    max = str1[i].length
  }
}
console.log(max);

首先利用split()方法中通过空格将字符串转化成由单词组成的数组,因为在数组中单词的长度能够遍历,然后通过for循环遍历数组中每个单词的长度,进行比较将最长的输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值