科大讯飞:
1,有面值1,5,10,50,100,分别对应变量:a、b、c、d、e
若有k元钱,最少多少张纸币能找零,若不能则输出-1。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] a=new int[5];
Map<Integer,Integer> map=new HashMap<>();
int[] b={1,5,10,50,100};
for(int i=0;i<5;i++) {
a[i] = sc.nextInt();
map.put(b[i],a[i]);
}
int k=sc.nextInt();
System.out.println(help(b,k,0,map));
}
public static int help(int[] b,int k,int sum,Map<Integer,Integer> map) {
if (k == 0) {
return sum;
}
for (int i = 4; i >= 0; i--) {
if (b[i] <= k) {
int temp = map.get(b[i]);
if (temp > 0) {
k -= b[i];
sum++;
map.put(b[i], temp - 1);
return help(b, k, sum, map);
}
}
}
return -1;
}
2,
9
25 84 21 47 15 27 68 35 20
用快排:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = in.nextInt();
}
quickSort(array, 0, n - 1);
}
public static void quickSort(int[] array, int left, int right) {
// 改动就在这里,之前写的是left > right
if (left >=right) {
return;
}
int key = array[left];
int i = left;
int j = right;
while (i < j) {
while (i < j && array[j] >= key) {
j--;
}
while (i < j && array[i] <= key) {
i++;
}
if (i < j) {
swap(array, i, j);
}
}
swap(array, left, j);
for (int k = 0; k < array.length; k++) {
if (k == 0) {
System.out.print(array[k]);
} else {
System.out.print(" " + array[k]);
}
}
System.out.println();
quickSort(array, left, i - 1);
quickSort(array, j + 1, right);
}
public static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
3,矩形是否相交
给定坐标:(0,0),(2,3),(1,2),(5,4)
判断前两个点对角线构成的矩形是否与后两个点构成的矩形相交
相交则输出1,否则输出0
作者:Sun浅雨
链接:https://www.nowcoder.com/discuss/463725?type=post&order=time&pos=&page=3&channel=666&source_id=search_post
来源:牛客网
直接模拟判断出为0的情况:
第二个矩形两个点的横坐标同时大于第一个矩形第二个点的横坐标为不相交
第二个矩形两个点的横坐标同时小于第一个矩形第一个点的横坐标为不相交
第二个矩形两个点的纵坐标同时大于第一个矩形第二个点的纵坐标为不相交
第二个矩形两个点的纵坐标同时小于第一个矩形第一个点的纵坐标为不相交
//直接判断矩形左上角和右下角的点是不是在另一个矩形里面
Scanner sc = new Scanner(System.in);
int xTR = sc.nextInt();
int xTC = sc.nextInt();
int xDR = sc.nextInt();
int xDC = sc.nextInt();
int yTR = sc.nextInt();
int yTC = sc.nextInt();
int yDR = sc.nextInt();
int yDC = sc.nextInt();
if(yTR >= xTR && yTR <= xDR && yTC >= xTC && yTC <= xDC) {
System.out.println(1);
} else if(yDR >= xTR && yDR <= xDR && yDC >= xTC && yDC <= xDC) {
System.out.println(1);
} else {
System.out.println(0);
}
4,字符串中提取整数
例如:+1a2
输出:12
例如:-1a2
输出:-12
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String string = in.nextLine();
int length = string.length();
int flag = 0;
for (int i = 0; i < length; i++) {
if (flag == 0 && string.charAt(i) == '-') {
System.out.print(string.charAt(i));
}
if (string.charAt(i) >= 48 && string.charAt(i) <= 57) {
if (flag == 0 && string.charAt(i) == 48) {
continue;
}
flag++;
System.out.print(string.charAt(i));
}
}
}
}