【JavaSE】java刷题--数组练习

news2024/11/27 14:53:23

前言

本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。

上一篇 数组 讲解了一维数组和二维数组的基础知识~

欢迎关注个人主页:逸狼

创造不易,可以点点赞吗~

如有错误,欢迎指出~

题1:实现toString的功能

将数组元素以字符串的形式输出在屏幕上

思路

首先要判断空指针和空数组的情况,利用字符串拼接实现toString功能

    //实现自己的数组转成字符串
    public static String myToString(int[] array){
        //判断空指针情况 (没有指向对象)
        if(array==null){
            return null;
        }
        //判断空数组情况  (指向的对象为空)
        if(array.length==0){
            return "[]";
        }

        String ret="[";
        for (int i = 0; i < array.length; i++) {
            ret=ret+array[i];
            if(i!= array.length-1){
                ret=ret+" ,";//字符串拼接
            }
        }
        ret+="]";
        return ret;
    }

题2:查找数组中的元素

顺序查找

如果数组比较大,效率低

    public static int checkNum(int[]array,int key){
        for (int i = 0; i < array.length; i++) {
            if(array[i]==key){
                return i;
            }
        }
        return -1;
    }

二分查找

效率高,前题是建立在当前数组是有序的

//二分查找  
    public static int zheBanFind(int[]array,int key){
        int right=0;
        int left= array.length-1;
        while(right<=left){
            //int mid=(right+left)/2;
            //int mid=(left+(left-righ)/2);//防止越界
            int mid=(right+left)>>>1;//右移一位,相当于除法
            if(array[mid]<key){
                right=mid+1;
            }
            if(array[mid]>key){
                left=mid-1;
            }
            if(array[mid]==key){
                return mid;
            }
        }
        return -1;
    }

题3:冒泡排序

    //java实现冒泡排序
    public static void BubbleSort(int[]array){
        boolean flag=true;
        for (int i = 0; i < array.length-1; i++) {
            //第一趟
            for (int j = 0; j < array.length-1-i; j++) {//减i表示每一趟都比上一趟少一次
                if(array[j]>array[j+1]){
                    int tmp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=tmp;
                    flag=false;
                }
            }
            if(flag==true){
                break;
            }
        }
    }

题4:数组的逆置

//数组的逆置
    public static void reverse(int[]array){
        int left=0;
        int right= array.length-1;
        while(left<right){
            int tmp=array[left];
            array[left]=array[right];
            array[right]=tmp;
            left++;
            right--;
        }
    }

题5:数组的拷贝

将数组重新拷贝一份,当然java中自带了拷贝方法copyOf(既可以拷贝,又可以扩容)

    }
    //数组的拷贝
    public static int[] copy1(int[]array){
        int[]tmp=new int[array.length];
        for (int i = 0; i < array.length; i++) {
            tmp[i]=array[i];
        }
        return tmp;
    }

    
public static void main(String[] args) {
        int[]array={9,8,7,6,5,4,3,2};

        //Java里自带的拷贝
        /**
         * 可以看作是扩容
         */

        int[] cp=Arrays.copyOf(array,array.length*2);
        System.out.println(Arrays.toString(cp));

        //数组填充  可以局部填充
        int[] array4=new int[10];
        Arrays.fill(array4,1,6,666);//在数组array4中的【1,6)的位置填充666
        System.out.println(Arrays.toString(array4));
    }

题6:奇前偶后

将数组中奇数放在前面,偶数放在后面


    public static void fun3(int[] array) {
        int left = 0;
        int right = array.length - 1;
        while (left < right) {
            while (left < right && array[left] % 2 != 0) {//left<right防止越界
                //奇数
                left++;
            }
            while (left < right && array[right] % 2 == 0) {//left<right防止越界
                //偶数
                right--;
            }
            int tmp = array[left];
            array[left] = array[right];
            array[right] = tmp;
        }
    }

    public static void main(String[] args){
            int[] array = {1, 2, 3, 5, 6, 7};
            fun3(array);
            System.out.println(Arrays.toString(array));
        }

题7:找加数

  在数组{2,7,11,15}中找两个数相加的值为13,返回【2,11】

  
    public static int[]fun4(int[]array,int target){
        int[]ret={-1,-1};//没找到就直接返回-1
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                if(array[i]+array[j]==target){
                    ret[0]=array[i];
                    ret[1]=array[j];
                }
            }
        }
        return ret;
    }

    public static void main(String[] args) {
        int[]array={2,7,11,15};
        int[]ret=fun4(array,4);
        System.out.println(Arrays.toString(ret));
    }

题8:判断是否有连续三个奇数

判断一个数组中是否存在连续3个奇数

    
    public static boolean fun8(int[]array){
        int count=0;
        for (int i = 0; i < array.length; i++) {
            if(array[i]%2!=0){
                count++;
                if(count==3){
                    return true;
                }
            }
            else{
                count=0;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int[]array={1,2,3,0,7,9,6};
        System.out.println(fun8(array));
    }

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

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

相关文章

JavaEE 初阶篇-深入了解多线程安全问题(出现线程不安全的原因与解决线程不安全的方法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 多线程安全问题概述 1.1 线程不安全的实际例子 2.0 出现线程不安全的原因 2.1 线程在系统中是随机调度且抢占式执行的模式 2.2 多个线程同时修改同一个变量 2.3 线…

C++基础之虚函数(十七)

一.什么是多态 多态是在有继承关系的类中&#xff0c;调用同一个指令&#xff08;函数&#xff09;&#xff0c;不同对象会有不同行为。 二.什么是虚函数 概念&#xff1a;首先虚函数是存在于类的成员函数中&#xff0c;通过virtual关键字修饰的成员函数叫虚函数。 性质&am…

c语言:用do-while输出前40项的斐波那契数值

求Fibonacci数列的前40个元素。该数列的特点是第1、2两个数为1、1。从第3个数开始&#xff0c;每数是其前两个数之和。 分析&#xff1a;从题意可以用如下等式来表示斐波那契数列&#xff1a; 1&#xff0c; 1&#xff0c; 2&#xff0c; 3&#xff0c; 5&#xff0c; 8&#x…

如何确保实物档案的安全

确保实物档案的安全有以下几个关键点&#xff1a; 1. 建立完善的安全措施&#xff1a;为实物档案建立专门的存储区域&#xff0c;控制进出口&#xff0c;限制访问权限&#xff0c;并使用安全锁和监控设备等物理安保措施。 2. 规范档案管理制度&#xff1a;建立档案管理制度&…

深度学习入门简单实现一个神经网络

实现一个三层神经网络 引言测试数据 代码 引言 今天我们实现一个简单的神经网络 俩个输入神经元 隐藏层两个神经元 一个输出神经元 激活函数我们使用sigmoid 优化方法使用梯度下降 我们前期准备是需要把这些神经元的关系理清楚 x1&#xff1a;第一个输入 x2&#xff1a;第二个…

Android ImageView 的scaleType 属性图解

目录 前言测试素材测试布局xmlscaleType前言 一、ScaleType.FIT_CENTER 默认二、ScaleType.FIT_START三、ScaleType.FIT_END四、ScaleType.FIT_XY五、ScaleType.CENTER六、ScaleType.CENTER_CROP七、ScaleType.CENTER_INSIDE八、ScaleType.MATRIX 前言 原文链接&#xff1a; A…

接口自动化框架搭建(三):pytest库安装

1&#xff0c;使用命令行安装 前提条件&#xff1a;已安装python环境 pip install pytest 或者 pip3 install pytest2&#xff0c;从编译器pycharme中安装

STM32 | PWM脉冲宽度调制(第五天呼吸灯源码解析)

STM32 | PWM脉冲宽度调制(第五天)PWM 技术在以下其他机器学习领域和应用中也可以发挥作用: 自然语言处理 (NLP):调节文本生成模型(例如 GPT-3)的输出长度和多样性。 强化学习:控制代理在环境中采取行动的频率和持续时间。 时间序列预测:调节模型预测未来事件的时间间隔…

HTLM 之 vscode 插件推荐

文章目录 vscode 插件live Serverprettiersetting 保存这个文档的更改Material Theme / Material Theme icon vscode 插件 live Server prettier setting 搜索 format default 保存这个文档的更改 cmds // mac ctrls // win Material Theme / Material Theme icon 来更换…

命名空间【C++】(超详细)

文章目录 命名空间的概念命名空间的定义命名空间定义的位置作用域每一个命名空间都是一个独立的域作用域符&#xff1a;&#xff1a; 编译器找一个变量/函数等的定义&#xff0c;寻找域的顺序为什么要有命名空间&#xff1f;1.解决库与程序员定义的同名的重定义问题2.解决程序员…

腾讯 tengine 替代 nginx

下载地址 变更列表 - The Tengine Web Server 解压 tar -xvf 安装包.gz 进入到解压目录 cd 解压目录 使用 ./configure 命令来指定安装目录,这边指定安装到 /opt/tengine/install路径下 新建install目录 ./configure --prefix/opt/tengine/install 检查是否有缺失的依…

Windows中忘记MySQL ROOT密码的解决方法

在需要ROOT身份登录MySQL但又忘记密码时&#xff0c;可以先已管理员身份运行cmd命令窗口,输入以下命令停止MySQL服务 net stop mysql 随后cd到MySQL安装目录下的bin目录下 D: //我的安装在D盘 cd D:\MySQL\bin 使用跳过权限验证的方式起启动MySQL mysqld --console --skip-g…

双非计算机考研目标211,选11408还是22408更稳?

求稳得话&#xff0c;11408比22408要稳&#xff01; 很多同学只知道&#xff0c;11408和22408在考察的科目上有区别&#xff0c;比如&#xff1a; 11408考的是考研数学一和英语一&#xff0c;22408考察的是考研数学二和英语二&#xff1a; 考研数学一和考研数学二的区别大吗…

PCL点云处理之 基于垂直度检测与距离聚类 的路面点云提取方案 (二百三十九)

PCL点云处理之 基于垂直度检测与距离聚类 的路面点云提取方案 (二百三十九) 一、算法流程二、具体步骤1.垂直度检测与渲染1.代码2.效果2.水平分布点云提取1.代码2.效果3.路面连通点云提取1.代码2.效果三、完整代码四、参考文献一、算法流程

Java:链表

一、链表简介 1、链表与顺序表的区别 上一篇博客我介绍了顺序表&#xff0c;这次我们来认识认识链表&#xff01;先来看看二者的区别&#xff1a; 顺序表&#xff1a;由于顺序表实际上是一个数组&#xff0c;因此它在物理上是连续的&#xff0c;逻辑上也是连续的&#xff01; …

文件上传漏洞-黑名单检测

黑名单检测 一般情况下&#xff0c;代码文件里会有一个数组或者列表&#xff0c;该数组或者列表里会包含一些非法的字符或者字符串&#xff0c;当数据包中含有符合该列表的字符串时&#xff0c;即认定该数据包是非法的。 如下图&#xff0c;定义了一个数组$deny_ext array(.a…

电脑文件msvcp120.dll丢失的解决方法详细分析,找多种靠谱方法修复

遇到msvcp120.dll文件丢失的问题实际上不算罕见&#xff0c;这往往是由于我们频繁使用电脑而导致的意外删除&#xff0c;或者是电脑受到病毒感染。当这类情况发生时&#xff0c;msvcp120.dll文件可能会被错误地移除或损坏&#xff0c;这便需要我们去进行修复。接下来&#xff0…

3D汽车模型线上三维互动展示提供视觉盛宴

VR全景虚拟看车软件正在引领汽车展览行业迈向一个全新的时代&#xff0c;它不仅颠覆了传统展览的局限&#xff0c;还为参展者提供了前所未有的高效、便捷和互动体验。借助于尖端的vr虚拟现实技术、逼真的web3d开发、先进的云计算能力以及强大的大数据处理&#xff0c;这一在线展…

【正点原子Linux连载】第二十三章 Linux PWM驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…