经典例题 更新版

找出拼接数字中的最小数

{3,31,323}
可以拼成:
331323 313323 323331 323323

public class 哔哩哔哩58 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Integer arr[]= {3,31,323};
		//找出拼接数字中的最小数
		int ans=fun(arr);
		System.out.println(ans);

	}

	private static int fun(Integer[] arr) {
		// TODO Auto-generated method stub
		
		//,(a,b)->(a+""+b)-(b+""+a)
		Arrays.sort(arr,new Comparator<Integer>() {
			public int compare(Integer o1,Integer o2)
			{
				String s1=o1+""+o2;
				String s2=o2+""+o2;
				return s1.compareTo(s2);//小于0为升序  大于0位降序
			}
		});
		//到这步已经成为升序序列
		StringBuilder ans=new StringBuilder();
		for(int i=0;i<arr.length;i++)
		{
			ans.append(arr[i]);
		}
		int ass=Integer.parseInt(ans.toString());
		return ass;
	}
}

数组包含

for循环套一个二分搜索
O(nlogn)

char a[]={'a','b','x','c'};
		char b[]= {'a','b','c'};
		
		int flag=0;
		Arrays.sort(a);
		for(int i=0;i<b.length;i++)
		{
			int index=Arrays.binarySearch(a, b[i]);
			if(index<0) 
				{flag=0;
				break;
				}
			else flag=1;
		}
		if(flag==1) System.out.println("包含");
		else System.out.println("不包含");

打印螺旋矩阵

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[][]= {
				{1,2,3,4,5},
				{2,3,4,56,2},
				{2,3,4,6,7}
							};
		prints(arr);

	}

	private static void prints(int[][] arr) {
		// TODO Auto-generated method stub
		int zuoshangh=0,zuoshangl=0,youxiah=arr.length-1,youxial=arr[0].length-1;
		int cnt=0;
		while(zuoshangh<=youxiah&&zuoshangl<=youxial)
		{
			int h1=zuoshangh,l1=zuoshangl;
			while(l1<=youxial)
			{
				System.out.print(arr[h1][l1++]+" ");
				cnt++;
			}
			h1++;l1=youxial;
			if(cnt==arr.length*arr[0].length)break;
			
			while(h1<=youxiah)
			{
				System.out.print(arr[h1++][l1]+" ");cnt++;
			}
			h1=youxiah;l1--;
			if(cnt==arr.length*arr[0].length)break;
			
			while(l1>=zuoshangl)
			{
				System.out.print(arr[h1][l1--]+" ");cnt++;
			}
			h1--;l1=zuoshangl;
			if(cnt==arr.length*arr[0].length)break;
			
			while(h1>zuoshangh)
			{
				System.out.print(arr[h1--][l1]+" ");cnt++;
			}
			if(cnt==arr.length*arr[0].length)break;
			zuoshangh++;zuoshangl++;
			youxiah--;youxial--;
			
		}
		
	}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值