数据结构与算法每日一练---1

问题1:
给定一个数值,如何搜索整数数组中加和为该数值的成对元素?
容易理解实例:
指定数为88,求一个长度为100整型数组中两数之和为88所有情况并列出来,数组中整数取值范围[1,100].
思路1:循环从数组中找到两个索引不同数相加后与88比较;时间复杂度O(nCr(100,2));
思路2:通过数学知识分析,88由两正整数相加情况本身只有44种情况:
1+…
2+…
3+…

43+45
44+44;
45+43

87+1.
那么直接在给定数组中搜索是否有相应的组合就行。
这样问题转变为在数组中找指定数字了。

HashMap result = new HashMap<Integer,Integer>;
for(int i = 1; i <= 44 ; i++){
	int beOrNot = intArray.indexOf(i); 
	if( beOrNot != -1){
		continue;
	}else{//当在数组中索引相同情况要排除掉,不做赘述。
	int beOrNot2 =intArray.indexOf(88 - i);
	if(beOrNot2 !=-1){
		result.put(i,88-i)
	}else{
	System.out.print("不存在");
}
	}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值