包装和类练习(1)

news2024/9/21 12:40:27

 

目录

 

1.移除元素

 2.删除有序数组中的重复项

3.合并两个有序数组

4.实现ArrayList类 

4.下列在Java语言中关于数据类型和包装类的说法,正确的是()

 5. boolean类型没有包装用的类,这句话是否正确?


1.移除元素

这里使用双指针法来实现,如果不是要找的val值就把值赋值给left,这样就可以排除val来计算新数组的长度。

class Solution {
    public int removeElement(int[] nums, int val) {
      int j = 0;
      for(int i = 0; i < nums.length; i++){
        if(nums[i] != val){
            nums[j++] = nums[i];
        }
      }
      return j;
    }
}

 2.删除有序数组中的重复项

因为数组是有序的所以重复的元素都在一起,只需要前面的值与后面的值相比较就好了,如果不同键j向前移动,进行计数最后得到数组没有重复数字的长度。 

class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 1,j = 1;
       while(i < nums.length){
        if(nums[i] != nums[i - 1]){
            nums[j] = nums[i];
            j++;
        }
        i++;
       }
       return j;
    }
}
     

3.合并两个有序数组

 

class Solution {
 
     public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int k = m + n -1;
        int i = m - 1;
        int j = n - 1;//从末尾开始比较
        while( i >= 0 && j >= 0){
            if(nums1[i] >= nums2[j]){
                nums1[k] = nums1[i];
                i--;
            }else{
                nums1[k] = nums2[j];
                j--;
            }
            k--;
        }
        //如果 i 走完 j 没走完 说明 nums1中的数字大于nums2中的数字 此时队例还没满j还要继续添加
        // 如果 i 没走完 j 走完 说明j中的全部数字已经充满数组并且剩下的nums[i]中的数字都是按照顺序排的  比如数组nums1 = {0,5,7} nums2 = {1,2,3,9}
        while(j >= 0){
            nums1[k] = nums2[j];
            j--;
            k--;
        }
    }
}

4.实现ArrayList类 

import java.util.Arrays;

public class MyArraylist {

    public int[] elem;
    public int usedSize;//0
    //默认容量
    private static final int DEFAULT_SIZE = 10;

    public MyArraylist() {
        this.elem = new int[DEFAULT_SIZE];
    }

    /**
     * 打印顺序表:
     * 根据usedSize判断即可
     */
    public void display() {
        for (int i = 0; i < elem.length; i++) {
            System.out.print(elem[i] + " ");
        }
        System.out.println();
    }


    // 新增元素,默认在数组最后新增
    public void add(int data) {
        if (isFull()) {
            resize();
        }
        this.elem[usedSize] = data;
        this.usedSize++;

    }

    private void resize() {
        this.elem = Arrays.copyOf(this.elem,2 * this.elem.length);
    }


    /**
     * 判断当前的顺序表是不是满的!
     *
     * @return true:满   false代表空
     */
    public boolean isFull() {
        return this.usedSize == elem.length;
    }


    private boolean checkPosInAdd(int pos) throws PosILLegal {
       if(pos < 0 || pos > usedSize){

           throw new PosILLegal("这个位置不合法");
       }
        return true;//合法
    }

    // 在 pos 位置新增元素
    public void add(int pos, int data) {
        try {
            checkPosInAdd(pos);
            if (isFull()) {
                resize();
            }
            for (int i = usedSize; i <= pos; i--) {
                elem[i + 1] = elem[i];
            }
            elem[pos] = data;
            usedSize++;
        } catch (PosILLegal e) {
            e.printStackTrace();
        }

    }

    // 判定是否包含某个元素
    public boolean contains(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if (elem[i] == toFind) {
                return true;
            }
        }
        return false;
    }

    // 查找某个元素对应的位置
    public int indexOf(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if (elem[i] == toFind) {
                return i;
            }
        }
        return -1;
    }

    // 获取 pos 位置的元素
    public int get(int pos) {

        try {
            checkPosInAdd(pos);
            checkEmpty();
            return elem[pos];
        } catch (PosILLegal e) {
            
            e.printStackTrace();
        } catch (EmptyException e) {
            e.printStackTrace();
        }
        return -1;
    }

    private void checkEmpty() throws EmptyException{
        if (isEmpty()) {
            throw new EmptyException("顺序表为空");
        }
    }

    private boolean isEmpty() {

            return this.usedSize == 0;

}

    // 给 pos 位置的元素设为【更新为】 value
    public void set(int pos, int value) {
        try {
            checkPosInAdd(pos);
            checkEmpty();
            elem[pos] = value;
        } catch (PosILLegal e) {
            e.printStackTrace();
        } catch (EmptyException e) {
            e.printStackTrace();
        }

    }

    /**
     * 删除第一次出现的关键字key
     *
     * @param key
     */
    public void remove(int key) {
        try {
            checkEmpty();
            int pos = indexOf(key);
            if (pos == -1) {
                return;
            }
            for (int i = pos; i < usedSize - 1; i++) {
                elem[i] = elem[i + 1];
            }
            usedSize--;
        } catch (EmptyException e) {
            e.printStackTrace();
        }

    }

    // 获取顺序表长度
    public int size() {
        return this.usedSize;
    }

    // 清空顺序表
    public void clear() {

        usedSize = 0;
    }
}

 

4.下列在Java语言中关于数据类型和包装类的说法,正确的是()

A.基本(简单)数据类型是包装类的简写形式,可以用包装类替代基本(简单)数据类型

B. long和double都占了64位(64bit)的存储空间。

C.默认的整数数据类型是int,默认的浮点数据类型是float

D.和包装类一样,基本(简单)数据类型声明的变量中也具有静态方法,用来完成进制转化

答案:B

A基本数据类型不是包装类型的简写

C浮点数默认是double

D基本数据类型不能调用方法

 

 5. boolean类型没有包装用的类,这句话是否正确?

A.正确

B.错误

答案:B

Boolean就是它的包装类 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

今年读过最绝的一本书!几乎把ChatGPT讲透了——<ChatGPT 从⼊⻔到精通>

这本书从⼊⻔到精通&#xff0c;介绍了 ChatGPT 的基础知识、实现⽅法、进阶应⽤以及最新进展等多个⽅⾯。 ChatGPT 作为⼀种强⼤的⾃然语⾔处理模型&#xff0c;其应⽤前景⼴泛&#xff0c;可以应⽤于⾃然语⾔⽣成、对话系统、推荐系统、知识图谱构建、智能家居、⼈⼯智能教育…

【SQL】常见语句合集

SQL常见语句合集 一. 新建表1.1 语句1.2 结果 二. 新增数据2.1 语句2.2 结果 三. 新增字段列3.1 语句3.2 结果3.3 扩展 四. 更新指定数据4.1 语句4.2 结果 五. 更新指定列5.1 语句&#xff08;长度&#xff09; 六. 删除字段列6.1 语句 七. 删除指定数据7.1 语句 八. 查询 一. …

Spring拦截器与Servlet过滤器区别

前言 温馨提醒:希望读者了解Spring拦截器和Servlet过滤器基础知识 目录 前言 位置和层面 使用场景 配置方式 生命周期 执行顺序 总结 Spring拦截器基础知识https://blog.csdn.net/Dreamkidya/article/details/141825688?spm1001.2014.3001.5501 Servlet过滤器基础知识h…

计算机视觉软件教学平台

1、基本介绍 计算机视觉软件教学平台是中智讯公司开发的一款面向人工智能相关专业机器视觉方向的综合型实验平台&#xff0c;主要满足&#xff1a;图像处理、图像识别、机器视觉应用、边缘计算应用、智能算法等课程的实验和实训&#xff0c;是基于新工科和工程教育思维和专业改…

IPv6的部署会影响现有IPv4网络的运行吗

IPv6是新一代的互联网协议&#xff0c;到现在为止&#xff0c;担心它是否会影响现有IPv4网络的运行的人不在少数。 先来了解下IPv4和IPv6的区别。IPv4使用的是32位地址&#xff0c;IPv6使用的是128位地址&#xff0c;很多人现在不理解了&#xff0c;这和地址数有关系吗&#xf…

【从零开始学爬虫】采集58同城房源数据

本文以采集北京市58同城房源数据为例进行演示&#xff1a; l 采集网站 【场景描述】采集58同城房源数据。 【使用工具】前嗅ForeSpider数据采集系统 http://www.forenose.com/view/commodity/forespider.html 【入口网址】 https://bj.58.com/xiaoqu/?PGTID0d000000-000…

【小呆的热力学笔记】理想热力循环

文章目录 5.理想热力循环5.1 卡诺定理5.2 卡诺循环5.3 逆向卡诺循环 5.理想热力循环 5.1 卡诺定理 考虑这样的一个实际的热力循环&#xff0c;其过程为存在一个高温热源&#xff0c;工作介质从该高温热源中吸取热量Q1&#xff0c;其中一部分通过工作介质对外做功转化为机械功…

idea安装并使用maven依赖分析插件:Maven Helper

在 IntelliJ IDEA 中安装并使用 Maven Helper 插件可以帮助你更方便地管理 Maven 项目的依赖&#xff0c;比如查看依赖树、排除冲突依赖等。以下是安装和使用 Maven Helper 插件的步骤&#xff1a; 安装 Maven Helper 插件 打开 IntelliJ IDEA 并进入你的项目。 在 IDE 的右下…

【408 数据结构】第1章绪论

文章目录 绪论考纲DS 基本概念1. 基本概念2. 数据结构三要素 算法&#xff08;时/空间复杂度计算&#xff09;1. 算法概念2. 算法效率的度量时间复杂度&#xff1a;空间复杂度&#xff1a; 小结 绪论 考纲 计算时间复杂度和空间复杂度&#xff08;重点难点&#xff09; DS …

简化物业数据管理:使用 Indexify 进行高级数据提取和检索

使用 Indexify 进行文档查询的分步指南。欢迎来到雲闪世界。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 总结&#xff1a; 传统的数据提取方法通常会错过非结构化内容的更深层次的见解&#xff0c;尤其是在房地产领域。 本文探讨使用 Indexify&…

Mental-LLM——通过在线文本数据利用大型语言模型进行心理健康预测

概述 源码地址&#xff1a;https://github.com/neuhai/Mental-LLM.git 论文地址&#xff1a;https://arxiv.org/abs/2307.14385 在一项关于哪些法律硕士适合精神健康护理的研究中&#xff0c;对以下五种法律硕士进行了比较 羊驼-7b。羊驼-LoRA。FLAN-T5-XXLGPT-3.5GPT-4. 作…

TLS连接的握手过程

TLS&#xff08;传输层安全协议&#xff09;握手过程是客户端&#xff08;如浏览器&#xff09;和服务器&#xff08;如网站&#xff09;之间建立安全连接的一系列步骤。以下是TLS握手的详细过程&#xff1a; 图片来自Vector 1. 客户端问候&#xff08;Client Hello&#xff0…

PHP一键发起灵活定制多功能投票小程序系统源码

​一键发起&#xff0c;灵活定制 —— 多功能投票小程序 &#x1f680;【开篇&#xff1a;告别繁琐&#xff0c;投票新体验】&#x1f680; 还在为组织投票活动而头疼不已吗&#xff1f;繁琐的流程、有限的选项、难以统计的结果...这些都将成为过去式&#xff01;今天&#x…

将python项目打包成一个可执行文件(包含需要的资源文件)

目标 项目源码是采用Python编写&#xff0c;代码中需要读取部分资源文件。现在需要将项目打包成一个exe文件&#xff0c;没有其他任何多余文件&#xff0c;仅1个exe文件。 打包 安装pyinstaller 在自己项目的虚拟环境中&#xff0c;安装pyinstaller。注意一定要是虚拟环境&…

亚马逊运营秘籍:这些冷门知识,你不可不知!

今天&#xff0c;小编将揭秘几个鲜为人知的亚马逊运营冷知识&#xff0c;让我们一同探索并学习吧&#xff01; 退货佣金扣除&#xff1a;当买家提出退货时&#xff0c;无论是部分退款还是全额退款&#xff0c;亚马逊会直接从卖家账户中扣除20%的佣金&#xff0c;剩余的80%则返还…

Java导出图片到excel

1、例如你有这样一个集合&#xff0c;具体结合你的业务场景 Data public class Student {/*** 姓名*/private String xh;/*** 学号*/private String xm;/*** 照片*/private byte[] zp; }2、相关代码 RequestMapping(value "/quereImgByPkid/{pkid}",method Requ…

【数据分享】地级市-国际互联网用户数(2001-2019年)

数据介绍 在当今数字化时代&#xff0c;互联网已经成为人们生活中不可或缺的一部分。今天&#xff0c;我们为大家带来一份极具价值的数据资源 —— 地级市 - 国际互联网用户数&#xff08;2001 - 2019 年&#xff09;。 这份涵盖了近二十年的数据&#xff0c;清晰地展现了各地…

Google上架:PAD的三种分发模式之install-time分发(减小包体上架,适用于包体大于150MB,小于1.15GB的包体)

近期技术服务在升级,抽空写一下关于上架部分的难点,今天来讲一下关于包体过大解决办法中的PAD分发(install-time分发)模式,希望能给好兄弟们带来帮助。 注意!!!这个方法适用于包体大于150MB,小于1.7GB这个区间的包体,不在这个区间的小伙伴可以跳过这个文章,直接私聊…

华为 HCIP-Datacom H12-821 题库 (6)

有需要题库的可以看主页置顶 V群仅进行学习交流 1.转发表中 FLAG 字段中B 的含义是&#xff1f; A、可用路由 B、静态路由 C、黑洞路由 D、网关路由 答案&#xff1a;C 解析&#xff1a; 可用路由用U 表示&#xff0c;静态路由用 S 表示&#xff0c;黑洞路由用 B 表示&#x…

交叉编译 mpfr

文章目录 交叉编译 mpfr1 概述2 源码下载3 交叉编译 交叉编译 mpfr 1 概述 MPFR&#xff08;Multiple Precision Floating-Point Reliable&#xff09;是一个用于高精度浮点数计算的开源库&#xff0c;它提供了高精度的浮点数运算和函数库&#xff0c;适用于需要处理大数或高精…