【Java】把一個數拆分成兩個數,求這兩個數在一個不重複的陣列中的兩個下標集合
阿新 • • 發佈:2020-08-10
題意:比如有一陣列[2, 4, 3, 1, 5],求5拆分成兩個數,這兩個數在陣列下標集合為0,2和1,3
程式碼
public static Map<Integer, Integer> getIndex(List<Integer> list, int a) { // 數拆分成兩個數在陣列中兩個下標的map Map<Integer, Integer> indexMap = new HashMap<>(); if (null == list || list.size() <= 0 || a < 2) {return indexMap; } // 陣列中的數與下標的map Map<Integer, Integer> numberIndexMap = new HashMap<>(); for (int index = 0, size = list.size(); index < size; index++) { numberIndexMap.put(list.get(index), index); } Integer integerX; Integer integerY; for (int i = 1, x = 1, y = a - 1; x < y; i++, x = i, y = a - i) { integerX= numberIndexMap.get(x); integerY = numberIndexMap.get(y); if (null != integerX && null != integerY) { indexMap.put(integerX, integerY); } } return indexMap; }