4.8学习总结 贪心算法+Stream流

发布于:2025-04-09 ⋅ 阅读:(28) ⋅ 点赞:(0)

贪心算法:

找到局部最优->从而推导全局最优。

Java练习:

获取随机验证码:

import java.util.*;
import java.util.function.BiConsumer;
public class test {
    public static void main(String[] args) {
        System.out.println(createCode(5));
    }
    public static String createCode(int n) {
        Random r=new Random();
        String code="";
        for(int i=0;i<n;i++){
            int type=r.nextInt(3);
            switch(type){
                case 0:
                    code+=r.nextInt(10);
                    break;
                case 1:
                    char chh1=(char)(r.nextInt(26)+65);
                    code+=chh1;
                    break;
                case 2:
                    char chh2=(char)(r.nextInt(26)+97);
                    code+=chh2;
                    break;
            }
        }
        return code;
    }
}

获取平均数:

import java.util.*;
import java.util.function.BiConsumer;
public class test {
    public static void main(String[] args) {
        System.out.println(getAvrge(6));//6为学生个数
    }
    public static double getAvrge(int number){
        Scanner sc=new Scanner(System.in);
        int[] scors=new int[number];
        for(int i=0;i<scors.length;i++){
            System.out.println("请输入第"+(i+1)+"个学生的成绩");
            int score=sc.nextInt();
            scors[i]=score;
        }
        int sum=0;
        int max=scors[0];
        int min=scors[0];
        for(int i=0;i<scors.length;i++){
            int score=scors[i];
            sum+=score;
            if(score>max){
                max=score;
            }
            if(score<min){
                min=score;
            }
        }
        return 1.0*(sum-max-min)/(scors.length-2);
    }
}

Stream流:

import java.util.*;
import java.util.function.BiConsumer;
public class test {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("张婧仪");
        list.add("周雨彤");
        list.add("赵丽颖");
        list.add("张张");
        list.add("张凌赫");
        list.stream().filter(name->name.startsWith("张")).filter(name->name.length()==3).forEach(name->System.out.println(name));
        /*ArrayList<String> list1=new ArrayList<>();
        for(String name:list){
            if(name.startsWith("张")){
                list1.add(name);
            }
        }
        System.out.println(list1);
        ArrayList<String> list2=new ArrayList<>();
        for(String name:list1){
            if(name.length()==3){
                list2.add(name);
            }
        }
        System.out.println(list2);*/
    }
}

最长的那行代码等于注释掉的代码。

HashMap不能保证存和取的顺序的,只能保证内容不变。