做网站的意义,智能小程序入口,一个服务器做多个网站,罗村网站建设1. 请补全JavaScript代码#xff0c;实现一个函数#xff0c;要求如下#xff1a;
根据输入的数字范围[start,end]和随机数个数n生成随机数生成的随机数存储到数组中#xff0c;返回该数组返回的数组不能有相同元素 注意#xff1a; 不需要考虑n…1. 请补全JavaScript代码实现一个函数要求如下
根据输入的数字范围[start,end]和随机数个数n生成随机数生成的随机数存储到数组中返回该数组返回的数组不能有相同元素 注意 不需要考虑n大于数字范围的情况 输入getUniqueNums(2,10,4) 输出[4,6,2,8]
const _getUniqueNums (start,end,n) {let a [];let count 0;while (count n) {let x Math.floor(Math.random() * (end - start) start)if (a.indexOf(x) -1) {a.push(x);count;}}return a;
}解题思路Math.random()*(end-start)start生成指定范围内的随机数 并且使用Math.floor()转化为整数判断该数字是否存在于数组中不存在则将该数字存为数组直到数组长度为n。
2. 两数相加给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。请你将两个数相加并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外这两个数都不会以 0 开头。
示例
输入l1 [2,4,3], l2 [5,6,4]输出[7,0,8]解释342 465 807.
解题思路l1和l2两个链表同时从头结点遍历取值相加如果两数相加大于0下一个要相加的数要注意进位计算得到一个数、便存入链表中最后将
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/
var addTwoNumbers function (l1, l2) {let node new ListNode(0);let head node;let add 0;while(l1 || l2 || add) {let a l1null ? 0 : l1.val;let b l2null ? 0 : l2.val;let s a b add;add s 10 ? 1 : 0;node.next new ListNode(s % 10);node node.next;if (l1) l1l1.next;if (l2) l2l2.next;}return head.next;
};3. 整数反转给你一个 32 位的有符号整数 x 返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] 就返回 0。假设环境不允许存储 64 位整数有符号或无符号。
输入x 123 输出321 输入x -123 输出-321 输入x 120 输出21
/*** param {number} x* return {number}*/
var reverse function (x) {let sum 0;let max Math.pow(2, 31) - 1, min -max - 1;if (x min || x max) {return 0;}while (x ! 0) {let a x % 10;x parseInt(x / 10);sum sum * 10 a;}if(sum max || sum min) {return 0;}return sum;};4. 盛水最多的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
/*** param {number[]} height* return {number}*/
var maxArea function(height) {let left0;let rightheight.length-1;let maxArea0;while(leftright) {let currentArea(right-left)*Math.min(height[left],height[right]);maxArea maxArea currentArea ? maxArea : currentArea;if (height[left]height[right]) {left;} else {right--;}}return maxArea;
};5. 整数转罗马数字
例如 罗马数字 2 写做 II 即为两个并列的 1。12 写做 XII 即为 X II 。 27 写做 XXVII, 即为 XX V II 。 通常情况下罗马数字中小的数字在大的数字的右边。但也存在特例例如 4 不写做 IIII而是 IV。数字 1 在数字 5 的左边所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况
I 可以放在 V (5) 和 X (10) 的左边来表示 4 和 9。X 可以放在 L (50) 和 C (100) 的左边来表示40 和 90。C 可以放在 D (500) 和 M (1000) 的左边来表示 400 和 900。 给你一个整数将其转为罗马数字。
示例1 输入: num 3输出: “III” 示例2 输入: num 4输出: “IV”
/*** param {number} num* return {string}*/
var intToRoman function(num) {let qian [,M,MM,MMM]; // 分别表示0一千、两千、三千 (1num3999) let bai [,C,CC,CCC,CD,D,DC,DCC,DCCC,CM];let shi [,X,XX,XXX,XL,L,LX,LXX,LXXX,XC];let ge [,I,II,III,IV,V,VI,VII,VIII,IX];let q Math.floor(num/1000);let b Math.floor(num/100%10);let s Math.floor(num/10%10);let g Math.floor(num%10);return qian[q] bai[b] shi[s] ge[g];
};6. 罗马数字转整数
示例1 输入: s “III”输出: 3 示例 2: 输入: s “IV”输出: 4 示例 3: 输入: s “IX”输出: 9
/*** param {string} s* return {number}*/
var romanToInt function(s) {let mnew Map([[I,1],[V,5],[X,10],[L,50],[C,100],[D,500],[M,1000]]);let res0;for(let i0;is.length;i) {let leftm.get(s[i]);let rightm.get(s[i1]);resleftright?-left:left;}return res;
};