算法题--js

火星文计算值

题目:
在这里插入图片描述

var numArr = [];
var optionStrArr = [];
function haveBothStr(str) {
  return str.indexOf("#") > -1 && str.indexOf("$") > -1;
}
function getArr(str, f) {
  let arr = [];
  arr[0] = str.substring(0, str.indexOf(f));
  arr[1] = str.substring(str.indexOf(f) + 1);
  return arr;
}
function main(line) {
  let nowLine = line;
  let arrTemp = [];
  if (haveBothStr(nowLine)) {
    if (line.indexOf("#") < line.indexOf("$")) {
      optionStrArr.push("#");
      arrTemp = getArr(nowLine, "#");
    } else {
      optionStrArr.push("$");
      arrTemp = getArr(nowLine, "$");
    }
    numArr.push(arrTemp[0]);
    nowLine = arrTemp[1];
  } else {
    if (line.indexOf("#") > -1) {
      optionStrArr.push("#");
      arrTemp = getArr(nowLine, "#");
    } else if (line.indexOf("$") > -1) {
      optionStrArr.push("$");
      arrTemp = getArr(nowLine, "$");
    } else {
      numArr.push(nowLine);
      jisuan();
    }
    numArr.push(arrTemp[0]);
    nowLine = arrTemp[1];
  }
  if (nowLine.indexOf("#") > -1 || nowLine.indexOf("$") > -1) {
    main(nowLine);
  } else {
    numArr.push(nowLine);
    jisuan();
  }
}
var sum = 0;
function jisuan() {
  let index = -1;
  if (optionStrArr.length > 0) {
    if (optionStrArr.indexOf("$") > -1) {
      index = optionStrArr.indexOf("$");
      x = parseInt(numArr[index]);
      y = parseInt(numArr[index + 1]);
      sum = 3 * x + y + 2;
    } else if (optionStrArr.indexOf("#") > -1) {
      index = optionStrArr.indexOf("#");
      x = parseInt(numArr[index]);
      y = parseInt(numArr[index + 1]);
      sum = 2 * x + 3 * y + 4;
    } else {
      console.log(sum);
    }
    numArr.splice(index, 2, sum);
    optionStrArr.splice(index, 1);
  } else {
    console.log(sum);
  }
  if (optionStrArr.length > 0) {
    jisuan();
  } else {
    console.log(sum);
  }
}
main("7#6$5#12");//226

javaScript-node

var readline = require('readline');
const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
});
rl.on('line', function(line){
   main(line);
});


var numArr = [];
var optionStrArr = [];
function haveBothStr(str) {
  return str.indexOf("#") > -1 && str.indexOf("$") > -1;
}
function getArr(str, f) {
  let arr = [];
  arr[0] = str.substring(0, str.indexOf(f));
  arr[1] = str.substring(str.indexOf(f) + 1);
  return arr;
}
function main(line) {
  let nowLine = line;
  let arrTemp = [];
  if (haveBothStr(nowLine)) {
    if (line.indexOf("#") < line.indexOf("$")) {
      optionStrArr.push("#");
      arrTemp = getArr(nowLine, "#");
    } else {
      optionStrArr.push("$");
      arrTemp = getArr(nowLine, "$");
    }
    numArr.push(arrTemp[0]);
    nowLine = arrTemp[1];
  } else {
    if (line.indexOf("#") > -1) {
      optionStrArr.push("#");
      arrTemp = getArr(nowLine, "#");
    } else if (line.indexOf("$") > -1) {
      optionStrArr.push("$");
      arrTemp = getArr(nowLine, "$");
    } else {
      numArr.push(nowLine);
      jisuan();
    }
    numArr.push(arrTemp[0]);
    nowLine = arrTemp[1];
  }
  if (nowLine.indexOf("#") > -1 || nowLine.indexOf("$") > -1) {
    main(nowLine);
  } else {
    numArr.push(nowLine);
    jisuan();
  }
}
var sum = 0;
function jisuan() {
  let index = -1;
  if (optionStrArr.length > 0) {
    if (optionStrArr.indexOf("$") > -1) {
      index = optionStrArr.indexOf("$");
      let x = parseInt(numArr[index]);
      let y = parseInt(numArr[index + 1]);
      sum = 3 * x + y + 2;
    } else if (optionStrArr.indexOf("#") > -1) {
      index = optionStrArr.indexOf("#");
      let x = parseInt(numArr[index]);
      let y = parseInt(numArr[index + 1]);
      sum = 2 * x + 3 * y + 4;
    } else {
      console.log(sum);
    }
    numArr.splice(index, 2, sum);
    optionStrArr.splice(index, 1);
  } else {
    console.log(sum);
  }
  if (optionStrArr.length > 0) {
    jisuan();
  } else {
    console.log(sum);
  }
}

接雨水

在这里插入图片描述

function main(height) {
  var rain = 0
  for (let i = 1; i < height.length - 1; i++) {
    var max_left = 0
    for (let j = i - 1; j >= 0; j--) {
      if (height[j] > max_left) {
        max_left = height[j]
      }
    }
    var max_right = 0
    for (let j = i + 1; j < height.length; j++) {
      if (height[j] > max_right) {
        max_right = height[j]
      }
    }
    var min = Math.min(max_left, max_right)
    if (min > height[i]) {
      rain = rain + (min - height[i])
    }
  }
  return rain
}
main( [0,1,0,2,1,0,1,3,2,1,2,1]) //6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#老程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值