就记住了一道保存到了idea。记载一下
输入描述
N,M分别为两个数组长度,M为参数
接下来两组N个数的数组。 另第一个数组每个元素➕上一个x,然后%M,使得第一个数组等于第二个数组,其中顺序不做要求。输出x
例如
输入 :3,2
1,2,3.
1,0,0
输出:1
java代码如下 通过率百分之67~
public class Main {
public static void main(String[] args) {
int n,m;
Scanner in=new Scanner(System.in);
n=in.nextInt();
m=in.nextInt();
int[] arrayA = new int[n];
int[] arrayB = new int[n];
for(int i=0;i<n;i++) {
arrayA[i]=in.nextInt();
}
for(int i=0;i<n;i++) {
arrayB[i]=in.nextInt();
}
int index=0;
while(index <= m) {
boolean flag = false;
flag = panduan(arrayA,arrayB,index,m);
if(flag==true) break;
index++;
}
System.out.println(index);
}
private static boolean panduan(int[] arrayA, int[] arrayB, int index,int M) {
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<arrayA.length;i++) {
map.put((arrayA[i]+index)%M,map.getOrDefault((arrayA[i]+index)%M,0)+1);
}//for end
for(int i=0;i<arrayB.length;i++) {
int current=arrayB[i];
if(map.containsKey(current)&&map.get(current)>=0) {//假如存在
map.put(current,map.get(current)-1);
}
else {
return false;
}//else end
}
return true;
}
}
喝奶茶
// 一群人喝奶茶比赛,他们可以选择连续的奶茶,也可以不喝
// 但是一旦选择奶茶,就必须喝完,C代表
// 每人每分钟喝多少奶茶,余数想上取整。
// 求最快喝完奶茶用时。 二分法
private static int minTea = Integer.MAX_VALUE;
public static void main(String[] args) {
int n = 3;//三个人
int[] tea = new int[]{10,3,7,9,4,10};//每杯奶茶含量
int c=4;//每人每分钟喝
drink(tea,0,n,0);
System.out.println(minTea);
}
private static void drink(int[] tea, int start, int n, int ml) {
//分别代表 奶茶 开始 还有几人 ml代表当前奶茶组合起来相对大的含量 返回ml最终即可 ml/c即为所求
if (n==1) { int curMax=0;
for(int j = start;j<tea.length;j++) {
curMax += tea[j];
}
int Cur=Math.max(ml,curMax);//较大的那个是当前
minTea = Math.min(minTea,Cur);
}
else {
for (int i=start;i<tea.length;i++) {
int sum=0;
for (int j = start;j<=i; j++) {
sum += tea[j];
}
drink(tea,i+1,n-1,Math.max(ml,sum));
}
}
}
流
两个字符串
比如 abc 和 cba
用字符串1拼接成字符串2 需要 ab c a b c a
即需要删除4个字符
输出4
代码如下
//例如 字符串 abc 和cba
// 那么需要 abc abc a 才能拼凑成cba 所以浪费了4个
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String in1 = sc.next();
String in2 = sc.next();
char[] chars1 = in1.toCharArray();
char[] chars2 = in2.toCharArray();
int length1 = chars1.length;
int length2 = chars2.length;
int count = 0;
int Start1=0;
for (char tmp:chars2) {
while(true) {
if(Start1==chars1.length) Start1=0;
if(tmp==chars1[Start1]) {
Start1++;
break;
}
if(tmp!=chars1[Start1]) {
count++;
}
Start1++;
}
}
System.out.println(count);
}