(1)度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
例如:输入:10 20 10 20 30 30 30 40 40 输出:30
(先对数组进行排序,之后即计算前后两个数组不同的次数,当次数等于2的时,则取到第三个。从1开始for循环的,所以取得arr[i]即可。同理若是欲取倒数第三大数,则把数组降序排序即可。若count++小于欲取的数的次数(n),则输入取不到,输出-1)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
int[] arr = new int[len];
for(int i=0;i<len;i++){
arr[i]=sc.nextInt();
}
Arrays.sort(arr);
int count =0;
for(int i=1;i<len;i++){
//关键在这里--表示前后两个数改变了
if(arr[i-1]!=arr[i]){
count++;
}
if(count==2){
System.out.println(arr[i]);
break;
}
}
if (count<2){
System.out.println("-1");
}
}
(2)一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
![](https://img.haomeiwen.com/i6231724/ccb1d2929d6d0f38.png)
(依次取三个节点,用前一个节点减去后一个节点,再间隔相减取得三个点的最大间隔)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
int[] arr = new int[len];
int sum=0,max=Integer.MIN_VALUE;
for(int i=0;i<len;i++){
arr[i]=sc.nextInt();
if(i!=0){
sum+=Math.abs(arr[i]-arr[i-1]);
}
}
for(int i=1;i<len-1;i++){
int temp = Math.abs(arr[i]-arr[i-1])+Math.abs(arr[i+1]-arr[i])-Math.abs(arr[i+1]-arr[i-1]);
if(temp>max){
max=temp;
}
}
System.out.println(sum-max);
}
(3)度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。
问最少操作多少次可以使得数组从小到大有序?
(用一个数组把所输入数字排序,之后与原数组比较,有相同的序列的则是不用进行排序的了)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
int[] arr = new int[len];
int[] sort = new int[len];
for(int i=0;i<len;i++){
arr[i]=sc.nextInt();
sort[i]=arr[i];
}
Arrays.sort(sort);
int index=0;
for(int i=0;i<len;i++){
if(arr[i]==sort[index]){
index++;
}
}
System.out.println(len-index);
}
(4)随机的生成20个小写字母,并实现排序的输出
public class Problem4 {
public static void main(String[] args) {
TreeSet<Character> tree = new TreeSet<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
if(o1 < o2){
return -1;
}else if (o1 > o2){
return 1;
}
return 0;
}
});
while(tree.size()<20){
char str = getRandomChar();
tree.add(str);
}
for(Iterator iter = tree.iterator(); iter.hasNext(); ) {
System.out.println(iter.next());
}
}
private static char getRandomChar() {
Random rand = new Random();
int value =rand.nextInt();
int i =(value%26)+97;
i=i%26;
i=i+97;
return (char) i;
}
}
网友评论