博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
这题目有毒之干不过codewars的OJ系统(一)
阅读量:6040 次
发布时间:2019-06-20

本文共 1807 字,大约阅读时间需要 6 分钟。

题目描述

给定一个整数数组和一个求和的数值,函数返回数组中第一对元素求和值等于给定求和值的数组元素,返回形式为数组。

案例:

sum_pairs([0, 0, -2, 3], 2)#  there are no pairs of values that can be added to produce 2.== None/nil/undefined (Based on the language)sum_pairs([10, 5, 2, 3, 7, 5],         10)#              ^-----------^   5 + 5 = 10, indices: 1, 5#                    ^--^      3 + 7 = 10, indices: 3, 4 *#  * entire pair is earlier, and therefore is the correct answer# 第一对数组中10的索引为5,比第二对数组中的索引3/4要大,所以程序的结果是第二对数组。== [3, 7]

负整数和重复的数字的情况可能会出现,测试中会有超过1000000(一千万)个元素的数组,确认不要超时。

失败的解决方案

失败原因:超时

第一种算法:

//超过10000000个元素的数组运行时间超过7000ms,失败//思路:循环给定数组,判断求和值与当前循环数组元素之差是否存在//处理找到多个求和结果下的情况,找到其索引最小的一组值。var sum_pairs=function(ints, s){
var flag = 0; var lastarr = []; for(var i = 0,len = ints.length;i
v[1]?v[0]:v[1]; }).reduce(function(p,c){
return p

奈何第一个极长数组的测试都没通过。

第二种算法:

//同样的失败原因//思路:找到求和值(有正有负)的绝对值的负数,然后从负数开始进行for循环,判断给定数组中是否存在当前循环值及求和值与当前循环值之差//同样要找到多个结果中索引最小的结果。var sum_pairs=function(ints, s){
var flag = 0; var lastarr = []; for(var i = (-Math.abs(s));i<=Math.abs(s);i++){ var index1 = ints.indexOf(i); //找到的一对值不能是同一个元素 var index2 = ints.indexOf(s-i,index1+1) //改正第二个值可能漏掉的情况 if(index1!=-1 && index2==-1 && i!=s-i){index2 = ints.indexOf(s-i);} if(index1!=-1 && index2!=-1){ lastarr.push([index1,index2]); }//结果数组为空数组则返回undefined if(lastarr.length == 0)return undefined; //找到最小索引 var tt = lastarr.map(function(v){
return v[0]>v[1]?v[0]:v[1]; }).reduce(function(p,c){
return p

通过两个极长数组的测试,但第三个失败了。

提交成功的答案

var sum_pairs=function(ints, s){
var seen = {} for (var i = 0; i < ints.length; ++i) { if (seen[s - ints[i]]) return [s - ints[i], ints[i]]; seen[ints[i]] = true }}//似乎我对求最小索引的一对值理解有误,呵呵!

转载于:https://www.cnblogs.com/xihe/p/6138607.html

你可能感兴趣的文章
git简单命令
查看>>
LAMP编译部署
查看>>
XenDesktop7.6安装部署入门教程
查看>>
HashMap的工作原理及HashMap和Hashtable的区别
查看>>
GregorianCalendar日历程序
查看>>
Sublime 中运行 Shell 、Python、Lua、Groovy...等各种脚本
查看>>
【Java集合源码剖析】ArrayList源码剖析
查看>>
linux的目录结构
查看>>
这次逻辑通了,
查看>>
HTMLHelper
查看>>
快速构建Windows 8风格应用29-捕获图片与视频
查看>>
OC语言Block和协议
查看>>
使用xpath时出现noDefClass的错误(找不到某个类)
查看>>
.Net规则引擎介绍 - REngine
查看>>
CSS3 transforms 3D翻开
查看>>
利用传入的Type类型来调用范型方法的解决方案
查看>>
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Bootstrap系列 -- 11. 基础表单
查看>>