Integer[] array = new Integer[]{1,2,3,1,2,3,4};如何取到4?
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.HashMap;import java.util.Random;public class FindRepetition { private static final int index = 100000; private static int[] nums = new int[index];
static {
Random random = new Random(); for(int i = 0; i < index; i++) {
nums[i] = random.nextInt(index);
}
}
public static void main(String... args) { long startTime1 = System.currentTimeMillis();
List<Integer> result1 = findRepetitionTime(nums);
System.out.println(String.format("时间效率优先,耗时:%s", (System.currentTimeMillis() - startTime1))); long startTime2 = System.currentTimeMillis();
List<Integer> result2 = findRepetitionSpace(nums);
System.out.println(String.format("时间效率优先,耗时:%s", (System.currentTimeMillis() - startTime2)));
}
//时间效率优先
private static List<Integer> findRepetitionTime(int... nums) {
List<Integer> result = new ArrayList<Integer>();
Map<Integer, Integer> countMap = new HashMap<Integer, Integer>(8); for(int num: nums) { if(countMap.containsKey(num)) {
countMap.put(num, countMap.get(num));
} else {
countMap.put(num, 1);
}
} for(Map.Entry<Integer,Integer> entry: countMap.entrySet()) { if(entry.getValue() == 1) {
result.add(entry.getKey());
}
} return result;
}
//空间效率优先
private static List<Integer> findRepetitionSpace(int... nums) {
List<Integer> result = new ArrayList<Integer>(); for (int i = 0; i < nums.length; i++) {
int count = 0;//标记重复次数
for (int j = 0; j < nums.length; j++) { if(nums[i] != nums[j]) {
count++;
} if(count==nums.length-1) {
result.add(nums[i]); break;
}
}
} return result;
}
}print:
时间效率优先,耗时:78空间效率优先,耗时:8102
上面的代码是两种方法的时间对比,时间和空间自己衡量,至于那种方法更好,各有各的优点。第一个消耗的空间多一点,第二个耗时长一点
添加回答
举报
0/150
提交
取消
