度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 

输入描述:



首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)




输出描述:


如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1



输入例子:



10
10 10 10 10 20 20 30 30 40 40



输出例子:



30



网上的大神大部分都是c++做的,我是用java实现,但应该可以优化,希望有大神指点,谢谢!



import java.util.Scanner;
//度度熊想去商场买一顶帽子,商场里有N顶帽子,
//有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,
//问第三便宜的帽子价格是多少? 
public class Main {


	public static int pai(int[] s,int N)
	{
		int min3=0;
		int temp=0;
		for(int i=N-1;i>=0;i--)
			for(int j=0;j<i;j++)
		{
			if(s[j]>s[j+1])
			{
				temp=s[j];
				s[j]=s[j+1];
				s[j+1]=temp;
			}
		}
		int k=0;
		for(int j=0;j<N-1;j++)
		{
			
			if(s[j]!=s[j+1])
			{
				k++;
			}
			if(k==2)
			{
				min3=s[1+j];
				break;
			}
		}
		if(k==0||k==1)
			min3=-1;
		return min3;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input=new Scanner(System.in);
		System.out.println("输入个数");
	    int N=input.nextInt();
	    int a[]=new int[N];
	    System.out.println("输入数组");
	    for(int i=0;i<N;i++){
	    	a[i]=input.nextInt();
	    }
         System.out.println(pai(a,N)); 
	}


}
[编程题] 度度熊回家
   
   
   
   
    
    
     
     时间限制:1秒
     
     空间限制:32768K
    
    
    
    
     
     一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 

     
     输入描述:
     
     输入一个正整数N, N <= 50。

接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100
     
     

输出描述:
     
     输出一个整数表示度度熊最少需要走的距离。
     
     
输入例子:
     
     4
1 4 -1 3
     
     
输出例子:
     
     4
import java.util.Scanner;
//一个数轴上共有N个点,第一个点的坐标是度度熊现在位置
//,第N-1个点是度度熊的家。
//现在他需要依次的从0号坐标走到N-1号坐标。
//但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,
//并直接将这个点忽略掉,问度度熊回家至少走多少距离? 
public class Dudu {


	public static int minDistance(int[] a,int N)
	{
		int min=Math.abs(a[1]-a[0])+Math.abs(a[2]-a[1])-Math.abs(a[2]-a[0]);
		int minIndex=1;
		for(int k=1;k<N-1;k++)
		{
			int tem=Math.abs(a[k-1]-a[k])+Math.abs(a[k+1]-a[k])-Math.abs(a[k+1]-a[k-1]);
			if(tem>=min)
		    {
				min=tem;
		        minIndex=k;
		    }
		}
		int mindist=Math.abs(a[minIndex+1]-a[minIndex-1]);
		for(int i=0;i<N-1;i++)
		{
			if(i!=minIndex-1)
			{
			mindist +=Math.abs(a[i+1]-a[i]);
			}
			else
				i++;
		}
		return mindist;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input=new Scanner(System.in);
		System.out.println("输入个数");
	    int N=input.nextInt();
	    int a[]=new int[N];
	    System.out.println("输入数组");
	    for(int i=0;i<N;i++){
	    	a[i]=input.nextInt();
	    }
	    System.out.println(minDistance(a, N));
	}


}