排好序的数组中,找出两数之和为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)+";"); } } }
相关文章推荐
- 一个数组,找出两数之和为m的所有组合
- 在数组中找出两数之和为10的所有组合(JAVA)
- 一个数组,找出两数之和为m的所有组合
- 一个排好序的数组,找出两数之和为m的所有组合
- 一个排好序的数组,找出两数之和为M的所有组合
- 一个排好序的数组,找出两数之和为m的所有组合
- 面试题———关于将一个整型数组中的所有元素组合成一个数字,并找出最小一个。
- 找出一个字符数组(元素不重复)所有可能字符的组合
- 【JavaScript】找出数组中两数之和为指定值的所有整数对
- 从数组中找出所有组合为s的数
- 试题:找出数组中元素和为指定值的所有组合
- 程序员面试金典——解题总结: 9.17中等难题 17.12设计一个算法,找出数组中两数之和为指定值的所有整数对。
- 找出数组中和为N+1的的所有组合
- 找出数组中满足条件的所有组合!
- 找出数组中两数之和为指定值的所有整数对
- 找出数组中两数之和为指定值的所有整数对
- 给定一个无序整形数组,找出其中所以三个数之和为0的所有组合
- 【JavaScript】找出数组中两数之和为指定值的所有整数对
- 在int数组中找出和为10的所有子集
- N个数组中所有元素的排列组合(笛卡尔积)算法