贪心算法:
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类的静态方法,在需要对数组进行排序时,非常的好用。
- 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));
}
}
也可以对字符串进行排序
- 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]
- 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());
}
}
}