当前位置: 首页 > news >正文

刷题笔记(第三天)

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

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

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

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

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

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

function isPalindrome(x) {let a = x.toString();let b = x.toString().split('').reverse().join('');return a === b
};

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

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

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

<script type="text/javascript"> document.write(Math.trunc(15.56));      // 输出:15    
</script>


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

​<script type="text/javascript"> document.write(Math.trunc(-15.56));  // 输出-15        
</script>​


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

<script type="text/javascript"> document.write(Math.trunc(0.236));    // 输出:0      
</script>


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

<script type="text/javascript"> document.write(Math.trunc(-0.236));   // 输出:0       
</script>

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

document.write(parseInt("10") + "<br>");            结果:10
document.write(parseInt("10.33") + "<br>");         结果:10
document.write(parseInt("34 45 66") + "<br>");      结果:34
document.write(parseInt(" 60 ") + "<br>");          结果:60
document.write(parseInt("40 years") + "<br>");      结果:40
document.write(parseInt("He was 40") + "<br>");     结果:NaN
document.write(parseInt("10",10)+ "<br>");          结果:10
document.write(parseInt("010")+ "<br>");            结果:10
document.write(parseInt("10",8)+ "<br>");           结果:8
document.write(parseInt("0x10")+ "<br>");           结果:16
document.write(parseInt("10",16)+ "<br>");          结果:16

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

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

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

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


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

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

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

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

示例 1 :

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

Array.prototype.last = function() {if(this.length>0) {return this[this.length-1];} else {return -1;}
};/*** const arr = [1, 2, 3];* arr.last(); // 3*/

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。

/*** @param {number} n* @return {Function} counter*/
var createCounter = function(n) {// 每次调用会返回前一个值+1,使用函数柯里化 则createCounter()会返回一个函数,这个函数可以继续被调用return ()=>{return n++;}
};/** * const counter = createCounter(10)* counter() // 10* counter() // 11* counter() // 12*/

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 对象

/*** @param {number} millis* @return {Promise}*/
async function sleep(millis) {return new Promise((resolve,reject)=>setTimeout(resolve,millis));
}/** * let t = Date.now()* sleep(100).then(() => console.log(Date.now() - t)) // 100*/

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。

/*** @param {number[]} nums* @param {Function} fn* @param {number} init* @return {number}*/
var reduce = function(nums, fn, init) {if (nums.length===0) {return init;} else {let i = 0;let sum=init;while(i<nums.length) {sum=fn(sum,nums[i]);i++;}return sum;}
};

http://www.lryc.cn/news/210196.html

相关文章:

  • Linux常用命令——chown命令
  • 浅谈Docker原理
  • Rt-Thread 移植5--空闲线程和线程阻塞(KF32)
  • Web3 治理实践探讨:如何寻找多元化发展路径?
  • 探索Vue 3和Vue 2的区别
  • 中微爱芯74逻辑兼容替代TI/ON/NXP工规品质型号全
  • 聊一下Word2vec-训练优化篇
  • Julia元组、字典、集合
  • EfficientViT:高分辨率密集预测的多尺度线性关注
  • 每日一道算法题:26. 删除有序数组中的重复项
  • 吴恩达《机器学习》2-2->2-4:代价函数
  • 软考 系统架构设计师系列知识点之设计模式(6)
  • use renv with this project create a git repository
  • 摄像头种类繁多,需要各自APP
  • Openssl数据安全传输平台010:jasoncpp 0.10.7的编译 - Windows-vs2022 / Ubuntu/ Centos8 -含测试代码
  • GSCoolink GSV6182 带嵌入式MCU的MIPI D-PHY转HDMI 2.0
  • ABBYY FineReader PDF15免费版图片文件识别软件
  • 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码
  • 几道面试题记录20231023
  • c++ 线程安全的string类
  • linux上安装apktool反编译apk解析AndroidManifest.xml得到首页Activity
  • 代码随想录算法训练营第4天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II
  • 【面向对象程序设计】Java大作业 汽车租赁管理系统V4.0
  • golang模拟QQ退出后自动重启
  • jQuery中ajax如何使用
  • redis集群的多key原子性操作如何实现?
  • 密码学与网络安全:量子计算的威胁与解决方案
  • GoLong的学习之路(十二)语法之标准库 flag的使用
  • mac git ssh
  • 栈、共享栈、链式栈(C++实现)