刷题日记【第十五篇】-笔试必刷题【有假币+求正数数组的最小不可组成和+最难的问题+因子个数】

导读:本篇文章讲解 刷题日记【第十五篇】-笔试必刷题【有假币+求正数数组的最小不可组成和+最难的问题+因子个数】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.实例方法需要通过super来调用超类中的实例方法;实例方法需要通过类名称来调用超类的类方法;实例方法需要向下转型才能调用子类的实例方法;实例方法可以直接调用本类的实例方法。

在这里插入图片描述

2.HashSet子类依靠【hashCode();equals()】方法区分重复元素.

在这里插入图片描述

HashSet内部使用Map保存数据,即将HashSet的数据作为Map的key值保存,这也是HashSet中元素不能重复的原因。而Map中保存key值前,会去判断当前Map中是否含有该key对象,内部是先通过key的hashCode,确定有相同的hashCode之后,再通过equals方法判断是否相同。

3.编程题【有假币】

在这里插入图片描述
**向上取整方法 Math.ceil() **

// write your code here
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(n==0){
                break;
            }
            int count = 0;
            while(n>=2){
                n = (int)Math.ceil((double)n/3);
                count++;
            }
            System.out.println(count);
        }
    }
}

4.编程题【求正数数组的最小不可组成和】

在这里插入图片描述
在这里插入图片描述

import java.util.*;
public class Solution {
	/**
	 *	正数数组中的最小不可组成和
	 *	输入:正数数组arr
	 *	返回:正数数组中的最小不可组成和
	 */
	public int getFirstUnFormedNum(int[] arr) {
        int min = Integer.MAX_VALUE;
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            max += arr[i];
            min = Math.min(min, arr[i]);
        }
        boolean res[] = new boolean[max + 1];
        res[0] = true; 
        for (int i = 0; i < arr.length; i++) {
            for (int j = max; j >= arr[i]; j--) {
                res[j] = res[j - arr[i]] || res[j];
            }
        }
        for (int i = min; i < res.length; i++) {
            if (!res[i])
                return i;
        }
        return max + 1;
	}
}

5.反射:getMethod与getDeclaredMethod的区别

getDeclaredMethods获取的是类自身声明的方法,包含public、protected和private方法。
getMethods获取的是类的所有public方法,包括自身的和从父类、接口继承的。

在这里插入图片描述

6.自动装箱/装箱 自动拆箱/拆箱

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.字符串的不可变性:字符串的内容一旦声明,无法修改

方法中修改字符串的值,并不影响字符串最初的值,只是创建一个临时变量,临时变量指向新的空间。

包访问权限:不需要如何修饰符的访问权限

在这里插入图片描述

8.编程题【最难的问题】

在这里插入图片描述
用三目运算符使代码更加简洁明了。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner= new Scanner(System.in);
        while(scanner.hasNext()){
            String str = scanner.nextLine();
            StringBuilder sb = new StringBuilder();
            for(int i =0;i<str.length();i++){
                if(str.charAt(i)==' '){
                    sb.append(' ');
                }else{
                    sb.append((char)(str.charAt(i)>'E'?str.charAt(i)-5:str.charAt(i)+21));
                }
            }
            System.out.println(sb);
            
        }
    }
}

9.编程题【因子个数】

在这里插入图片描述

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            int count = 0;
            for(int i =2;i<Math.sqrt(n);i++){
                if(n%i==0){
                    while(n%i==0){
                        n=n/i;
                    }
                    count++;
                }
            }
            if(n!=1){
                count++;
            }
            System.out.println(count);
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119525.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!