最近找工作一直在做笔试和面试,遇到两个简单的代码题,虽然简单,但我还是没有很好的把他们给完成好。
首先,第一个是多益网络一面,面试管给我的一道题,给定一个集合S(没有重复元素), 输出它所有的子集
* 输入 1 2 3
* 输出
* 1, 2, 12, 3, 13, 23, 123
package Com.DuoYi;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) {
int[] a = {1,2,3};
List<List<Integer>> ret = getSubSet(a);
System.out.println(ret);
}
private static List<List<Integer>> getSubSet(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<>());
for (int i = 0; i < nums.length; i++){
int size = list.size();
for (int j = 0; j < size; j++){
List<Integer> clone = new ArrayList<>(list.get(j));
clone.add(nums[i]);
list.add(clone);
}
}
return list;
}
}
第二题是一个笔试题,题目叫:任意一个偶数(大于2)都可以由2两个素数组成,组成偶数的2的素数有很多种情况,要求输出组成指定偶数的两个素数差值最小的素数对。
输入:20
输出:7 13
package haoJing.Problem_2;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
int a = 0;
for (int i = 2; i < n/2; i++){
if (isPrime(i)){
if (isPrime(n - i)){
a = i;
}
}
}
System.out.println(a);
System.out.println(n - a);
}
}
private static boolean isPrime(int n) {
for (int i = 2; i <= Math.sqrt(n); i++){
if (n % i == 0){
return false;
}
}
return true;
}
}
|