获取数组中多个相加等于0的一组数字 javascript
//获取数组中两个相加等于0的一对数字,比如[ [ -10, 10 ], [ -5, 5 ] ]
var arr=[-5,10,1,-10,3,4,5,9]
//对数组进行排序
arr.sort(function(num1,num2){
if(num1>num2)return 1;
if(num1<num2)return -1; return 0
})
//用尺取法
var data=[]
//s1左边 s2右边 num等于某个值 arr排序后的数组
function func(s1,s2,num,arr,callback){
var data=[]
while(s1<s2){
if(arr[s1]+arr[s2]>num){
s2--
}
if(arr[s1]+arr[s2]<num){
s1++
}
if(arr[s1]+arr[s2]==num){
data.push([arr[s1],arr[s2]])
s1++
s2--
}
}
callback(data)
}
var s1=0,s2=arr.length-1;
func(s1,s2,0,arr,function(data){
console.log(data)
})
//获取3个数字相加等于0,
for(var i=0;i<arr.length-3;i++){
func(i+1,arr.length-1,-arr[i],arr,function(data){
if(data.length){
console.log([arr[i]].concat(data))
}
})
}
//[ -10, [ 1, 9 ], [ 5, 5 ] ]
//[ -5, [ 1, 4 ] ]
获取数组中多个相加等于0的一组数字 javascript的更多相关文章
- 求数组中两两相加等于20的组合(Python实现)
题目 求数组中两两相加等于20的组合. 例:给定一个数组[1, 7, 17, 2, 6, 3, 14],这个数组中满足条件的有两对:17+3=20, 6+14=20. 解析 分为两个步骤: 先采用堆排 ...
- C#中获取数组中相加和最接近或等于(<=)给定值的算法
, ,,,,,,,,, }; List<List<int>> mylist = new List<List<int>>(); int length = ...
- php获取数组中重复数据的两种方法
分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...
- python获取数组中最多的元素
获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=sam ...
- Javascript获取数组中的最大值和最小值的方法汇总
比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧 比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...
- [JavaScript] 获取数组中相同元素的个数
/** * 获取数组中相同元素的个数 * @param val 相同的元素 * @param arr 传入数组 */ function getSameNum(val,arr){ processArr ...
- js获取数组中的最大值/最小值
目录 前言 1. 使用Math的静态方法max/min 1.1 结合ES6的扩展运算符...使用 1.2 结合apply/call方法来使用 1.3 结合reduce来使用 2. 排序获取 2.1 只 ...
- C++入门经典-例6.9-通过指针变量获取数组中的元素
1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码 ...
- c# 获取数组中最大数的值
求数组中最大的数的值:1.数组的max函数: class Program { static void Main(string[] args) { ,,,,,,,,,}; int max= GetMax ...
随机推荐
- Python pip命令
一.简介 pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品.distribute是setuptools的取代(Setuptools包后期不再维护了),p ...
- readfile()
readfile()将一个文件写入到输出缓存参数1:文件名
- HttpSession相关API
//获取Session对象 request.getSession() request.getSession(boolean create) //获取SessionId getId() //获取当前se ...
- PROC程序设计
通过在过程化编程语言中嵌入SQL语句而开发出的应用程序称为Pro程序. 在C/C++语言中嵌入SQL语句而开发出的应用程序称为Pro*C/C++程序. –在通用编程语言中使用的SQL称为嵌入式SQL: ...
- mxnet 线性模型
mxnet 线性模型 li {list-style-type:decimal;}ol.wiz-list-level2 > li {list-style-type:lower-latin;}ol. ...
- delphi Post数据到网页
var http: TIdHttp; sendtoserver: TStringStream; str: string; begin http := TIdHttp.Create(); // 创建 h ...
- 使用 Windows Phone 8 文件和 URI 关联的自动启动应用
更详细,猛撸这里:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj206987(v=vs.105).aspx 在WMApp ...
- C# 筛选string 类型里面的汉字,获取首字母字母,正则表达式Regex 常用验证
界面效果 1.提取汉字 private void buttonX1_Click(object sender, EventArgs e) { if (TxtYuan.Text.Trim() != &qu ...
- Spring学习----自动装配@Resource、@Autowired、@Qualifier
直接看下面的代码即可明白: applicationContext.xml里面添加个bean: <!--注解的注入 --> <bean id="student3" ...
- SSI简介 与 nginx开启SSI
Server Side Include : 服务器端嵌入 原理 : 将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本.图形或应用程序信息包含到网页中.因为包含 SSI 指令的文件 ...