【发布时间】:2017-08-08 02:54:37
【问题描述】:
我需要编写一个方法,其中 int[] 将作为输入提供,它应该返回一个数组,但所有出现超过 n 次的数字都被完全删除。
Inputs:
(int list) data = [1, 2, 2, 3, 3, 3, 4, 5, 5]
Output:
(int list) [1, 4]
这些是我尝试过的步骤。
- 将 int 数组复制到 ArrayList (inputList)。
- 创建 LinkedHashset 以查找唯一值
-
迭代LH,用迭代器求ArrayList的收集频率。
int[] intArray = new int[0]; if(n!=0){ if(data.length<100){ ArrayList<Integer> inputList = new ArrayList<Integer>(data.length); //System.out.println(Arrays.toString(data)); for (int i = 0; i < data.length; i++){ inputList.add(Integer.valueOf(data[i])); } LinkedHashSet<Integer> lhs = new LinkedHashSet<>(inputList); intArray = new int[lhs.size()]; int i=0; int j=0; Iterator<Integer> itr = lhs.iterator(); while(itr.hasNext()){ Integer shiftNumber = itr.next(); if(Collections.frequency(inputList, shiftNumber)==1) { intArray[i++] = shiftNumber.intValue(); j++; } } intArray = Arrays.copyOf(intArray, j); return intArray; } } return intArray;
我能够使用上述 sn-p 实现结果。但是,我需要通过使用任何算法或其他集合对象来减少代码段并提高性能的建议。
【问题讨论】:
-
看起来你想发帖到Code Review,所以不是为了改进工作代码,而是修复损坏的代码。
-
或者您可以寻找答案进行比较并查看其他解决方案进行测试。 Removing Duplicates
-
@Underbalanced 请重新阅读声明。要求是删除具有重复项的项目。输入:(int list) data = [1, 2, 2, 3, 3, 3, 4, 5, 5] 输出:(int list) [1, 4]
-
为什么问题是-1?我希望它不是重复的
标签: java arrays collections