第二周作业

后端-第二周作业考核

1.编写一个圆类 Circle 的 Java 程序。圆类有2个数据成员 , 分别是半径radius和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆还可以返回其面积 area 。

class Circle {
    double radius = 0;
    String color = null;

    public Circle(double radius, String color) {
        this.radius = radius;
        this.color = color;
    }

    public double getRadius() {
        return radius;
    }

    public String getColor() {
        return color;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getArea() {
        return radius * radius * Math.PI;
    }
}

2. (1)ArrayList底层采用 可变数组 数据结构来实现的,LinkedList底层采用双向链表数据结构来实现的

在一般情况下,上述两种数据结构的优缺点是什么?

ArrayList 因为要维护数组角标,所以插入&删除数据比较慢
ArrayList 底层是数组,数组内存连续,改查数据比较快
LinkedList 插入&删除都只是移动指针效率很高
LinkedList 底层是双向链表,内存不连续,改查数据比较慢
当然二者都是有角标的,且都是线程不安全的

​ (2)HashSet底层数据结构在JDK8做了一次重大升级,JDK8之前采用的是数组+链表来实现的,也就是数组 +链表来实现;到了JDK8之后采用数组+链表+红黑树来实现。

提示:不会的话在网上找找,并记住。

**3.**编写一个程序,能够统计一句话中各个字母出现的次数。

示例 1:

输入:I love Echo
输出:{c=1, e=1, E=1, v=1, h=1, I=1, l=1, o=2}

提示:

map.containsKey(i)//使用Map做该题时,该方法可判断map集合中是否含有该key
String s=str.replace(" ", ""); //该代码可去除字符串中的空格
public class ShiYiShi{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String s = str.replace(" ","");
        char[] c = s.toCharArray();
        Map<Character,Integer> count = new HashMap<>();
        for (char i:c) {
            if (count.containsKey(i)){
                count.put(i,count.get(i) + 1);
            }else{
                count.put(i,1);
            }
        }
        System.out.println(count);

    }
}

4.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
public class ShiYiShi{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        String[] s1 = s.split("\\D+");

        int len = s1.length;
        for (int i = 1; i < len-2; i++) {
            for (int j = 2; j < len-1; j++) {
                if (Double.parseDouble(s1[i]) + Double.parseDouble(s1[j]) == Double.parseDouble(s1[len-1])){
                    int qian = i - 1;
                    int hou = j - 1;
                    System.out.println("[" + qian + "," + hou + "]");
                }
            }
        }
    }
}

5.创建一个对象类,成员变量为name和age,请存储学生对象并遍历

要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

提示:创建TreeSet集合,使用比较器排序。

示例

对象属性:
"xishi",23
"diaochan",28
"wangzhaojun",28
"yangyuhuan",25
排序后输出结果:
23,xishi
25,yangyuhuan
28,diaochan
28,wangzhaojun

public class ShiYiShi{
    public static void main(String[] args) {
        TreeSet<Student> students = new TreeSet<>();
        students.add(new Student("xishi",23));
        students.add(new Student("diaochan",28));
        students.add(new Student("wangzhaojun",28));
        students.add(new Student("yangyuhuan",25));

        for (Student i:students) {
            System.out.println(i);
        }

    }
}

class Student implements Comparable{
    String name = null;
    int age = 0;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public int compareTo(Object o) {

        Student s = (Student)o;


        if(this.age>s.age) {
            return 1;
        }else if(this.age<s.age){
            return -1;
        }else{
            return this.name.compareTo(s.name);
        }



    }

    @Override
    public String toString() {
        return ""+age+","+name+"";
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你好!改善深层神经网络的方法有很多,以下是一些常见的方法: 1. 使用更好的激活函数:传统的激活函数如Sigmoid、tanh等可能存在梯度消失或爆炸的问题。可以尝试使用ReLU、Leaky ReLU、ELU等激活函数,以减轻这些问题。 2. 使用批标准化(Batch Normalization):批标准化对网络的输入进行标准化,有助于加快网络的训练速度,并且可以缓解梯度问题,使得更深层的网络也能够训练得更好。 3. 使用残差连接(Residual Connections):残差连接可以帮助信息在网络中更好地流动,从而减轻梯度消失的问题。通过将某些层的输出与输入相加,可以使得网络更易于训练。 4. 使用更好的优化算法:传统的梯度下降算法如随机梯度下降(SGD)可能存在训练速度慢、易陷入局部最优等问题。可以尝试使用更高级的优化算法如Adam、RMSprop等,以加快模型的收敛速度。 5. 添加正则化:过拟合是深层神经网络常见的问题之一。可以通过添加正则化项如L1正则化、L2正则化等来限制模型的复杂度,防止过拟合的发生。 6. 数据增强:通过对训练数据进行一些随机的变换,如平移、旋转、缩放等,可以增加模型的泛化能力,防止过拟合。 这些方法只是改善深层神经网络的一部分,具体的选择和调整需要根据具体问题和数据集来进行。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣使然的小小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值