51,396
社区成员




public int sameRed(byte[] src, byte[] target) {
int same = 0;
int ca = 0, cb = 0;
while (cb < 6 & ca < 6) {
if (src[ca] < target[cb]) {
ca++;
} else if (src[ca] > target[cb]) {
cb++;
} else {
same++;
cb++;
ca++;
}
}
return same;
}
看看是不是非常简单
public int sameRed(byte[] src, byte[] target) {
int same = 0;
Set<Byte> cachedSet = new HashSet<Byte>();
for (byte by : src) {
cachedSet.add(by);
}
for (byte by : target) {
if (cachedSet.contains(by)) {
same++;
}
}
return same;
}
public int sameRed(byte[] src, byte[] target) {
int same = 0;
int[] nums = new int[50]; //假设双色球最大号码是50
for (byte by : src) {
nums[(int)by] = 1;
}
for (byte by : target) {
if (nums[(int)by] == 1) {
same++;
}
}
return same;
}
public class Sample {
public static void main(String[] args) {
int[] num1 = {1, 2, 3, 8, 9, 5};
int[] num2 = {2, 3, 4, 5, 6, 7};
List<Integer> l1 = new ArrayList<>();
List<Integer> l2 = new ArrayList<>();
for (int n : num1)
l1.add(n);
for (int n : num2)
l2.add(n);
l1.retainAll(l2); // 两个集合的交集
System.out.println(l1);
}
}