当前位置: 首页 > news >正文

包装和类练习(1)

 

目录

 

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 位置的元素设为【更新为】 valuepublic 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.mrgr.cn/news/18672.html

相关文章:

  • 兔子生崽问题
  • 了解Python的生成器及其优点
  • window安装rocketmq
  • 网络安全知识手册
  • 【BIOS】如何找到SPI的读模式
  • 全网最全的安服工程师修炼手册
  • 机器学习中的增量学习(Incremental Learning,IL)策略是什么?
  • [数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别
  • magisk+lsposed hook okhttp3采集小红书app端接口(包含完整源码)(2024-09-03)
  • 【API】淘系某东商品详情数据解析,API接口系列
  • Nature Communications:解码人类触觉感知与运动神经控制机理,用仿生手重现类人触觉感知与抓握
  • 提高编程效率的秘密武器:探索高效开发工具
  • Python测试开发基础(二)
  • YoloV9改进策略:下采样改进|集成GCViT的Downsampler模块实现性能显著提升|即插即用
  • 80.删除有序数组中的重复项1
  • 线性代数 -- 矩阵求导
  • 某宝上买盗版wordpress的危害和要承担的法律后果
  • 有哪些开学必备好物推荐?2024年盘点推荐五款高性价比数码好物!
  • Android随记
  • 【Redis】Redis 持久化机制详解:RDB、AOF 和混合持久化的工作原理及优劣分析