三角形的最大周长、二维数组的查找和扩展(小米笔试题)—— JavaScript练练编程题(一)
最近的笔试让我发现自己的编程题,思路是有的,但是太慢了。深知自己菜,决定每天都练练,从浅入深。
在开始之前,提醒一下和我一样是刚开始去参加笔试的,如果在牛客网上笔试的一定要提前看
判题系统使用帮助:https://www.nowcoder.com/discuss/276?type=post&order=time&pos=&page=41
因为他要输入输出,会导致你的代码有些变化,所以要提前适应。
重要的是,它取到的值是字符串,分割后是字符串数组。这个要小心
三角形的最大周长
给定由一些正数(代表长度)组成的数组 A
,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0
。
示例 1:
输入:[2,1,2]
输出:5
示例 2:
输入:[1,2,1]
输出:0
示例 3:
输入:[3,2,3,4]
输出:10
示例 4:
输入:[3,6,2,3]
输出:8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-perimeter-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
//1.0 108ms 38.1MB 2020-3-29 var largestPerimeter = function(A) { A.sort((v1,v2)=>{return v2-v1}); if(A.length<3){ return 0; } else{ for(let i=1;i<A.length-1;i++){ if(A[i-1]<A[i]+A[i+1]){ return (A[i-1]+A[i]+A[i+1]); } } return 0; } }; // 2.0 76ms 36.8MB 2020-3-29 var largestPerimeter = function(A) { for(let i=0;i<A.length;i++){ for(let j=i+1;j<=A.length;j++){ let temp; if(A[i]<A[j]){ temp = A[j]; A[j] = A[i]; A[i] = temp } } if(i>=2&&A[i-2]<A[i-1]+A[i]){ return (A[i]+A[i-1]+A[i-2]); } } return 0; };
二维数组的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
//202/3/30 63ms 7828k function Find(target, array) { let arr =[]; for(let i = 0;i<array.length;i++){ for(let j = 0;j<array[i].length;j++){ // console.log(target); arr.push(array[i][j]) } } if(arr.includes(target)){ return true; }else{ return false; } }
小米2019的前端实习编程题
设计一个函数,两个参数,第一个参数为整数的数组,第二个参数为标杆值,取数组中任意符合两个数相加为标杆值的下标相加到一起的值
传入一串字符串(如下例子所示),转义为数组,除去数组中最后一位数字作为标杆值,取数组中任意符合两个数相加为标杆值的下标,输出所有符合要求的下标的和。
如下解释:
value:0,1,5,11,17,16,2,5,10,30,12
index:1 3 6 8
输出结果为18
value:0,1,5,11,17,16,2,5,10,30,12
index:1 3 6 8
输出结果为18
// 2020/3/30 219ms 5476k let line = '0,1,5,11,17,16,2,5,10,30,12'; var lines = line.split(','); let arrList = []; for(let i = 0; i<lines.length-1;i++){ arrList.push(lines[i]) } let tar = lines[lines.length-1]; console.log(arrList,tar); function Find(target,arr){ var result = 0 ; for(let i = 0;i<arr.length;i++){ for(let j = i+1;j<arr.length;j++){ if(parseInt(target) == parseInt(arr[i])+parseInt(arr[j])){ console.log(i,j); result = result+i+j }else{ continue; } } } console.log(result); return result; } Find(tar,arrList)