• 刷题笔记(第三天)


    1.给定二进制字符串,将其换算成对应的十进制数字
    输入:'11000000'
    输出:192

    1. function base10(str) {
    2. let sum = 0;
    3. let a = str.split('').reverse(); // 个位是第一个元素
    4. for (var i = 0; i < a.length; i++) {
    5. sum+=a[i]*Math.pow(2, i);
    6. }
    7. return sum;
    8. }

    2.给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

    回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    例如,121 是回文,而 123 不是。

    解题思路:通过toString方法,将数字x转化为字符串;通过字符串的split方法,将字符串转化为数组;通过数组的reverse方法将数组反转,通过数组的join方法,将数组拼接为字符串。比较正序字符串和反向字符串是否相等。

    1. function isPalindrome(x) {
    2. let a = x.toString();
    3. let b = x.toString().split('').reverse().join('');
    4. return a === b
    5. };

    3.小数转化为整数的几种方法:

    (1)JavaScript中的Math.trunc()函数用于通过除去小数位来返回浮点数的整数部分。换句话说,Math.trunc()函数会切断该点和其右边的数字。
    返回值:Math.trunc()函数返回给定数字的整数部分

    示例1:当将正数的float类型作为参数传递时:


    示例2:当负数的float类型作为参数传递时:
     


    示例3:当将0到1之间的正数作为参数传递时:


    示例4:当将0到1之间的负数作为参数传递时:
     

    (2)使用 parseInt()函数可解析一个字符串,并返回一个整数。

    1. document.write(parseInt("10") + "
      "
      );            结果:10
    2. document.write(parseInt("10.33") + "
      "
      );         结果:10
    3. document.write(parseInt("34 45 66") + "
      "
      );      结果:34
    4. document.write(parseInt(" 60 ") + "
      "
      );          结果:60
    5. document.write(parseInt("40 years") + "
      "
      );      结果:40
    6. document.write(parseInt("He was 40") + "
      "
      );     结果:NaN
    7. document.write(parseInt("10",10)+ "
      "
      );          结果:10
    8. document.write(parseInt("010")+ "
      "
      );            结果:10
    9. document.write(parseInt("10",8)+ "
      "
      );           结果:8
    10. document.write(parseInt("0x10")+ "
      "
      );           结果:16
    11. document.write(parseInt("10",16)+ "
      "
      );          结果:16

    (3)Math.floor()向下取整

    1. console.log(Math.floor(2.5));  //2
    2.  
    3. console.log(Math.floor(-2.5));  //-3

    (4)Math.ceil()向上取整
    Math.ceil():返回大于参数值的最小整数。

    1. console.log(Math.ceil(2.5));  //3
    2.  
    3. console.log(Math.ceil(-2.5));  //-2


    (5)Math.round()四舍五入

    1. console.log(Math.round(2.5)); //3
    2. console.log(Math.round(-2.5)); //-2
    3. console.log(Math.round(-2.6)); //-3

    4.请你编写一段代码实现一个数组方法,使任何数组都可以调用 array.last() 方法,这个方法将返回数组最后一个元素。如果数组中没有元素,则返回 -1 。

    你可以假设数组是 JSON.parse 的输出结果。

    示例 1 :

    输入:nums = [null, {}, 3]
    输出:3
    解释:调用 nums.last() 后返回最后一个元素: 3。

    1. Array.prototype.last = function() {
    2. if(this.length>0) {
    3. return this[this.length-1];
    4. } else {
    5. return -1;
    6. }
    7. };
    8. /**
    9. * const arr = [1, 2, 3];
    10. * arr.last(); // 3
    11. */

    5.给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n ,  n + 1 ,  n + 2 ,等等)。

    示例 1:

    输入:
    n = 10 
    ["call","call","call"]
    输出:[10,11,12]
    解释:
    counter() = 10 // 第一次调用 counter(),返回 n。
    counter() = 11 // 返回上次调用的值加 1。
    counter() = 12 // 返回上次调用的值加 1。

    1. /**
    2. * @param {number} n
    3. * @return {Function} counter
    4. */
    5. var createCounter = function(n) {
    6. // 每次调用会返回前一个值+1,使用函数柯里化 则createCounter()会返回一个函数,这个函数可以继续被调用
    7. return ()=>{
    8. return n++;
    9. }
    10. };
    11. /**
    12. * const counter = createCounter(10)
    13. * counter() // 10
    14. * counter() // 11
    15. * counter() // 12
    16. */

    6. 睡眠函数

    请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值。

    示例 1:

    输入:millis = 100
    输出:100
    解释:
    在 100ms 后此异步函数执行完时返回一个 Promise 对象
    let t = Date.now();
    sleep(100).then(() => {
      console.log(Date.now() - t); // 100
    });
    示例 2:

    输入:millis = 200
    输出:200
    解释:在 200ms 后函数执行完时返回一个 Promise 对象

    1. /**
    2. * @param {number} millis
    3. * @return {Promise}
    4. */
    5. async function sleep(millis) {
    6. return new Promise((resolve,reject)=>setTimeout(resolve,millis));
    7. }
    8. /**
    9. * let t = Date.now()
    10. * sleep(100).then(() => console.log(Date.now() - t)) // 100
    11. */

    7.数组归约运算

    请你编写一个函数,它的参数为一个整数数组 nums 、一个计算函数 fn 和初始值init 。返回一个数组 归约后 的值。

    你可以定义一个数组 归约后 的值,然后应用以下操作: val = fn(init, nums[0]) , val = fn(val, nums[1]) , val = fn(val, nums[2]) ,... 直到数组中的每个元素都被处理完毕。返回 val 的最终值。

    如果数组的长度为 0,它应该返回 init 的值。

    请你在不使用内置数组方法的 Array.reduce 前提下解决这个问题。

    示例 1:

    输入:
    nums = [1,2,3,4]
    fn = function sum(accum, curr) { return accum + curr; }
    init = 0
    输出:10
    解释:
    初始值为 init=0 。
    (0) + nums[0] = 1
    (1) + nums[1] = 3
    (3) + nums[2] = 6
    (6) + nums[3] = 10
    Val 最终值为 10。
    示例 2:

    输入: 
    nums = [1,2,3,4]
    fn = function sum(accum, curr) { return accum + curr * curr; }
    init = 100
    输出:130
    解释:
    初始值为 init=100 。
    (100) + nums[0]^2 = 101
    (101) + nums[1]^2 = 105
    (105) + nums[2]^2 = 114
    (114) + nums[3]^2 = 130
    Val 最终值为 130。

    1. /**
    2. * @param {number[]} nums
    3. * @param {Function} fn
    4. * @param {number} init
    5. * @return {number}
    6. */
    7. var reduce = function(nums, fn, init) {
    8. if (nums.length===0) {
    9. return init;
    10. } else {
    11. let i = 0;
    12. let sum=init;
    13. while(ilength) {
    14. sum=fn(sum,nums[i]);
    15. i++;
    16. }
    17. return sum;
    18. }
    19. };

  • 相关阅读:
    【博学谷学习记录】超强总结,用心分享|Hive开窗函数
    基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)
    30 个数据工程必备的Python 包
    Django学习第一天
    Mybatis-MyBatis的缓存
    【编程题 】NC2 重排链表(详细注释 易懂)
    01 介绍
    数据库理论 05 关系数据库设计——基于《数据库系统概念》第七版
    xftp无法删除目录
    【2023研电赛】华东赛区一等奖:基于EtherCAT通信有限时间位置收敛伺服系统
  • 原文地址:https://blog.csdn.net/m0_62508027/article/details/133801874