Java-10.11-455

在这里插入图片描述
在这里插入图片描述
贪心算法:

class Solution {
    
    
    public int findContentChildren(int[] g, int[] s) {
    
    
        if(g==null || s==null) return 0;
        Arrays.sort(g);
        Arrays.sort(s);
        int gi=0,si=0;
        while(gi<g.length && si<s.length){
    
    
            if(g[gi]<=s[si]){
    
    
                gi++;
            }
            si++;
        }
        return gi;
    }
}

注意:
Arrays.sort()方法的使用:
Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。

  1. Arrays.sort(int[] a)

这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。

public class test_1 {
    
    

	public static void main(String[] args) {
    
    
		int[] a = {
    
    9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
		Arrays.sort(a); //默认是从小到大
		System.out.println(Arrays.toString(a));
	}

}
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

注意一下Arrays.toString()方法的使用

import java.util.Arrays;

public class test_1 {
    
    

	public static void main(String[] args) {
    
    
		String[] strArray = new String[]{
    
    "Zs","ZA", "aa", "Az","D","w","A","z"};
        Arrays.sort(strArray);
        System.out.println(Arrays.toString(strArray));
	}

}

也可以对字符串进行排序

  1. Arrays.sort(int[] a, int fromIndex, int toIndex)

这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序!

import java.util.Arrays;

public class test_1 {
    
    

	public static void main(String[] args) {
    
    
		int[] a = {
    
    9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
		Arrays.sort(a,0,3); //将下标为0,1,2的进行排序
		System.out.println(Arrays.toString(a));
	}
}
[7, 8, 9, 2, 3, 4, 1, 0, 6, 5]
  1. public static void sort(T[] a,int fromIndex, int toIndex, Comparator<? super T> c)

上面有一个拘束,就是排列顺序只能是从小到大,如果我们要从大到小,就要使用这种方式

import java.util.Comparator;

public class MyComparator implements Comparator<Integer>{
    
    

	@Override
	public int compare(Integer o1, Integer o2) {
    
    
//		return o1-o2;  //顺序
		return o2-o1;  //逆序
	}
}

import java.util.Arrays;

public class test_1 {
    
    

	public static void main(String[] args) {
    
    
		Integer[] a = {
    
    9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
		MyComparator mcmp=new MyComparator();
		Arrays.sort(a,mcmp); 
		System.out.println(Arrays.toString(a));
	}
}
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

在此处只能用Integer,不能用int

还可以用自定义的类

public class Student {
    
    

	private String name;
	private int score;
	
	public Student(String name,int score) {
    
    
		this.name=name;
		this.score=score;
	}

	public String getName() {
    
    
		return name;
	}

	public void setName(String name) {
    
    
		this.name = name;
	}
	
	public int getScore() {
    
    
		return score;
	}

	public void setScore(int score) {
    
    
		this.score = score;
	}
}
import java.util.Comparator;

public class MyComparator_1 implements Comparator<Student>{
    
    

	@Override
	public int compare(Student o1, Student o2) {
    
    
//		return o1.getScore()-o2.getScore();  //分数从小到大
		return o2.getScore()-o1.getScore();  //分数从大到小
	}

}
import java.util.Arrays;

public class test_2 {
    
    

	public static void main(String[] args) {
    
    
		Student[] stus=new Student[] {
    
    new Student("gh",60),new Student("zf",100),new Student("zyq",80)};
		MyComparator_1 mcmp=new MyComparator_1();
		Arrays.sort(stus,mcmp);
		for(int i=0;i<stus.length;i++) {
    
    
			System.out.println(stus[i].getName()+" "+stus[i].getScore());
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Desperate_gh/article/details/109012562