您的位置:首页 > 其它

排好序的数组中,找出两数之和为m的所有组合

2017-12-22 20:19 274 查看
package com.xtli.controller.leetCode;

import java.util.HashMap;
import java.util.Map;
/*
* 排好序的数组中,找出两数之和为m的所有组合。
*/
public class APlusBEqualMInArray {
public static void main(String[] args) {
int[] a = {1,2,2,3,3,4,5,6};
int m = 6;
//normal(a, m);
better(a,m);
}
//正确思路
private static void better(int[] a, int m) {
int start = 0;
int end = a.length-1;
while(start<end) {
if(a[start]+a[end] == m) {
System.out.println(a[start]+","+a[end]);
start++;
end--;
} else if(a[start]+a[end] > m) {
end--;
} else if(a[start]+a[end] < m) {
start++;
}
}
}
//一般思路
private static void normal(int[] a, int m) {
Map<Integer,Integer> b = new HashMap<Integer, Integer>();
for(int i = 0;i < a.length;i++) {
for(int j = 0;j<a.length;j++) {
if(i!=j&&(a[i]+a[j]==m)) {
if(a[i]>=a[j]) {
b.put(a[i], a[j]);
} else {
b.put(a[j], a[i]);
}
break;
}
}
}
for(int t : b.keySet()) {
System.out.println(t+","+b.get(t)+";");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: