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

Java学习 10.Java-数组习题

一、创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100

代码实现

    public static void main(String[] args) {int[] arr=new int[100];for (int i = 0; i < arr.length; i++) {arr[i]=i+1;}System.out.println(Arrays.toString(arr));}

运行结果

二、改变原有数组元素的值

实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}

思路

传入数组,得到数组长度,将数组长度赋值给新数组长度,用数组长度进行遍历,将数组中每一个元素赋值给新数组的元素,最后返回新数组

代码实现

    public static int[] transform(int arr[]){int n= arr.length;int arr2[]=new int[n];for (int i = 0; i < n; i++) {arr2[i]=arr[i]*2;}return arr2;}public static void main(String[] args) {int arr[]={3,5,7,9};int arr2[]=transform(arr);System.out.println(Arrays.toString((arr2)));}

运行结果

三、数组所有元素之和

实现一个方法 sum, 以数组为参数, 求数组所有元素之和.

思路

定义一个变量,将数组进行遍历,将数组遍历得到的值加给定义的变量,返回变量

代码实现

    public static int[] transform(int arr[]){int n= arr.length;int arr2[]=new int[n];for (int i = 0; i < n; i++) {arr2[i]=arr[i]*2;}return arr2;}public static void main(String[] args) {int arr[]={3,5,7,9};int arr2[]=transform(arr);System.out.println(Arrays.toString((arr2)));}

运行结果

四、调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。

如数组:[1,2,3,4,5,6]        调整后可能是:[1, 5, 3, 4, 2, 6]

思路

遍历数组,定义i,j下标,如果i下标遇到的对应元素为奇数,i往后走,j下标遇到的对应元素是偶数,j往前走

代码实现

        public static void reorder(int[] array){int i = 0;int j = array.length-1;while (i <j) {while (i < j && array[i] % 2 != 0) {i++;//如果i下标遇到的对应元素为奇数,i则往后走}while (i < j && array[j] % 2 == 0) {j--;//如果j下标遇到的对应元素为偶数,j则往前走}int tmp = array[i];array[i] = array[j];array[j] = tmp;}}public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请您输入数组的长度");int n=sc.nextInt();int[] array=new int[n];System.out.println("请您输入数组的值");for (int i = 0; i < array.length; i++) {array[i]=sc.nextInt();}reorder(array);System.out.println(Arrays.toString(array));}

运行结果

五、两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

思路

遍历数组元素,当数组元素与给出的目标值相等时返回该数组元素下标

代码实现

    public static int[] Nums(int[] nums,int target){for (int i = 0; i < nums.length; i++) {for (int j = i+1; j < nums.length; j++) {if(nums[i]+nums[j]==target){return new int[]{i,j};}}}return null;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请您输入数组的长度");int n=sc.nextInt();int[] nums=new int[n];System.out.println("请您输入数组的值");for (int i = 0; i < n; i++) {nums[i]=sc.nextInt();}System.out.println("请您输入一个数");int target = sc.nextInt();int[] arr = Nums(nums, target);System.out.println(Arrays.toString(arr));}

运行结果

六、只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

思路

遍历数组,通过异或^运算,返回元素,因为只有一个元素只出现一次以外,其余元素都出现两次,所以进行遍历,因为a^a=0,异或卡在哪里,则哪个元素位置在哪里

异或运算的特点:

1.任何数和0做异或运算,结果还是原来那个数字,即a^0=a

2.任何数和本身做异或运算,结果为0,即a^a=0

3.异或运算满足交换律和结合律

代码实现

 public static void main(String[] args) {int arr[]={0};Scanner sc=new Scanner(System.in);int n= sc.nextInt();arr=new int[n];for (int i = 0; i < n; i++) {arr[i]= sc.nextInt();}int num=Num(arr);System.out.println(num);}public static int Num(int[] arr) {int num = 0;int length = arr.length;for (int i = 0; i < length; i++) {num ^= arr[i];}return num;}

运行结果

七、多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素

思路

传定数组,通过for循环,定义变量,对每一个数再for循环进行遍历,如果有重复的数则再加一,最后判定重复的次数是否大于数组长度的一半,如果是则返回这个重复的数

代码实现

   public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] arr = {0};arr = new int[n];System.out.println("请输入数组元素(多数元素)");for (int i = 0; i < arr.length; i++) {arr[i] = sc.nextInt();}int newnum = MoreNum(arr);System.out.println(newnum);}public static int MoreNum(int[] arr) {int count = 0;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length; j++) {if (arr[i] == arr[j]) {count++;}if (count > arr.length / 2) {return arr[i];}}}return -999;}

运行结果

八、存在连续三个奇数的数组

给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。

思路

遍历数组,如果遇到数目是奇数,则判断它的下一个和下下个数目是不是奇数,如果是则返回true,如果不存在则返回false

代码实现

    public static boolean Judge(int[] arr) {for (int i = 0; i < arr.length - 2; i++) {if (arr[i] % 2 == 1) {if (arr[i + 1] % 2 == 1) {if (arr[i + 2] % 2 == 1) {return true;}}}}return false;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请您输入数组存储个数");int n= sc.nextInt();int[] arr;arr=new int[n];System.out.println("请您输入数组元素");for (int i = 0; i < arr.length; i++) {arr[i]= sc.nextInt();}boolean a=Judge(arr);System.out.println(Judge(arr));}

运行结果

相关文章:

  • 36 Gateway网关 快速入门
  • postgis函数学习
  • 数据管理系统-week1-介绍
  • 给CAD中添加自定义菜单CUIX
  • 【Java0基础学Java第八颗】 -- 继承与多态 -- 多态
  • 189. 轮转数组
  • leetCode 493 翻转对 归并分治 + 图解
  • Redis系列-四种部署方式-单机部署+主从模式+哨兵模式【7】
  • (层次遍历)104. 二叉树的最大深度
  • pytorch DistributedDataParallel 分布式训练踩坑记录
  • 【问题记录】docker pull 镜像的时候 devel 版本和无 devel 版本的差别
  • 使用 eBPF检测 mmap泄露
  • 【电路笔记】-节点电压分析和网状电流分析
  • EDA实验----四选一多路选择器设计(QuartusII)
  • Java中单例模式
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • create-react-app项目添加less配置
  • IP路由与转发
  • JSONP原理
  • Linux各目录及每个目录的详细介绍
  • Vue学习第二天
  • 编写符合Python风格的对象
  • 前端js -- this指向总结。
  • 如何用vue打造一个移动端音乐播放器
  • 入门级的git使用指北
  • 小李飞刀:SQL题目刷起来!
  • 一些css基础学习笔记
  • 如何在招聘中考核.NET架构师
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (8)STL算法之替换
  • (LeetCode 49)Anagrams
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (三)Honghu Cloud云架构一定时调度平台
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)大道至简,职场上做人做事做管理
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .net core控制台应用程序初识
  • .NET6实现破解Modbus poll点表配置文件
  • .NetCore 如何动态路由
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @ResponseBody
  • []sim300 GPRS数据收发程序
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [cb]UIGrid+UIStretch的自适应