[英]How to remove duplicates from input array and put them in output list?
public class Exercise1 {
//Notice that in this main, each of the functions have been called for you
public static void main(String[] args) {
int[] data = {1,3,5,4,7,9,1,3};
int[] output = new int[data.length];
System.out.println("Does our array contain a '1':"+ contains(data, 1)); //true
System.out.println("Does our array contain a '0':"+ contains(data, 0)); //false
System.out.println("What is the index of '4'? " + indexOf(data, 4)); //3
System.out.println("The number of occurrences of '1'? " + count(data, 1)); //2
duplicates(data, output);
System.out.println("After removing duplicates from data:");
System.out.println(Arrays.toString(output));
}
public static boolean contains(int[] input, int target) {
//todo: see lab
for (int i = 0; i < input.length; i++) {
if (target == input[i])
return true;
}
return false;
}
public static int indexOf(int[] input, int target) {
//todo: only find the indexOf a target if we contain() it
if (contains(input, target) == false) {
return -1;
}
for (int i = 0; i < input.length; i++) {
if (target == input[i]) {
return i;
}
}
return -1;
}
public static int count(int[] input, int target){
int retVal = 0;
//todo: only try to count a number that we contain()
if (contains(input, target) == true) {
for (int i = 0; i < input.length; i++) {
if (input[i] == target) {
retVal++;
}
else {
retVal = retVal;
}
}
}
return retVal;
}
public static void duplicates(int[] input, int[] output) {
//todo: Transfer items once from the arrays:input and output.
//transfer items from input to the output array IF:
//only if newArray.count(target) == 0 //ie, we haven't put this in yet
//only if newArray.indexOf(target) == -1 //not found in newArray, or
//only if newArray.contains(target) == false //does not exist in the new array
}
} }
I have gotten all of my methods to work besides the duplicates one--I have to remove the duplicates from the array in the main so it should output {1, 3, 5, 4, 7, 9, 0, 0}. 除了重复项之外,我已经使所有方法都可以使用-我必须从主数组中删除重复项,以便它应输出{1、3、5、4、7、9、0、0}。 To do this, we are supposed to call the count() method but I'm not sure how to call that method in duplicates if the parameters are different.
为此,我们应该调用count()方法,但是如果参数不同,我不确定如何重复调用该方法。 Can anyone help?
有人可以帮忙吗?
For each item
in input
array: Call count(input,item)
. 对于
input
数组中的每个item
:调用count(input,item)
。 Then if the result is greater than 1, it is a duplicated item. 然后,如果结果大于1,则它是重复项。 So remove it from
input
and put to output
. 因此,将其从
input
删除并放到output
。
Instead of writing code to identify duplicates, make them similar and then remove just the duplicates.. 不要编写代码来标识重复项,而是使它们相似,然后仅删除重复项。
I just tried this on my local and it works. 我只是在我的本地尝试过,并且有效。
package tes;
import java.util.Arrays;
public class RemoveDuplicatesfromArray {
// setup code
public static void main(String[] args) {
int[] source = { 1, 3, 5, 4, 7, 9, 1, 3 };
int[] target = Arrays.copyOf(source, source.length);
removeDuplicates(source, target);
printarray(source, target);
}
// helper not needed just to print and check
private static void printarray(int[] source, int[] target) {
for (int i = 0; i < source.length; i++) {
System.out.print(source[i] + " ");
}
System.out.println("");
System.out.println("---");
for (int i = 0; i < target.length; i++) {
System.out.print(target[i] + " ");
}
}
// actual logic
public static void removeDuplicates(int[] source, int[] target) {
for (int i = 0; i < source.length - 1; i++) {
for (int j = i + 1; j < source.length; j++) {
if (source[i] == source[j]) {
target[j] = 0;
}
}
}
}
}
HTH.. HTH ..
public static void duplicates(int[] input, int[] output){
for (int q = 0; q < input.length; q++){
if (!contains(output, input[q]) ||
indexOf(output, input[q]) == -1 ||
count(output, input[q]) == 0){ // # of times the current input appears in
// output should be zero
output[q] = input[q];
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.