【JavaSE练习题】数组的创建和使用

数组的创建和使用

  • 奇数位于偶数之前
  • 冒泡排序
  • 两数之和
  • 只出现一次的数字
  • 多数元素
  • 存在连续三个奇数的数组

奇数位于偶数之前

调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
如数组:[1,2,3,4,5,6]
调整后可能是:[1, 5, 3, 4, 2, 6]
在这里插入图片描述

public static void func4(int[] array) {int i = 0;int j = array.length-1;while (i < j) {//循环外面给了i < j  ,思考这里为什么还需要判断?while (i < j && array[i] % 2 != 0) {i++;}//i 下标一定是偶数while (i < j && array[j] % 2 == 0) {j--;}int tmp = array[i];array[i] = array[j];array[j] = tmp;}
}

冒泡排序

给定一个整型数组, 实现冒泡排序(升序排序)

进一步进行了优化,当数据在排序过程当中有序了,会在某一趟排序后,发现数据没有交换。
所以,每一趟排序完,都去检查是否发生了交换,没有交换证明数据已近有序,不需要再进行剩余趟数的排序了。

public static void bubbleSort(int[] array) {boolean flg = false;//1、确定一个趟数for (int i = 0; i < array.length-1; i++) {for (int j = 0; j < array.length-1-i; j++) {if(array[j] > array[j+1]) {int tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;flg = true;}}if(flg == false) {//没有交换break;}}
}

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

本题最重要的一句话:假设每种输入只会对应一个答案
也就意味着不会有多个答案,暴力求解就是挨个匹配查找即可,代码如下:

public int[] twoSum(int[] nums, int target) {int[] result = new int[2];// 双指针i和j,i从前向后遍历,j从后向i遍历,若arr[i]+arr[j]=target,即为题解for (int i = 0; i < nums.length - 1; i++) {for (int j = nums.length - 1; j > i; j--) {if (nums[i] + nums[j] == target) {result[0] = i;result[1] = j;}}}return result;
}

如果想提升效率,需要用到后期学习的哈希表来解答,目前大家属于初学阶段,暂且以上述解法为准。

只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
本题主要考察运算符:异或。

异或的特点是:
1、n ^ n = 0;即两个相同的数字异或是0
2、0 ^ n = n;即0和任何数字进行异或,结果就是那个任何数字。

public int singleNumber(int[] nums) {// 用异或运算的性质可以巧妙的解决这个问题,因为数组中只有一个数字出现一次// 则其他出现两次的数字用异或运算后都是0,最终整个数组异或运算的结果即为所求。int ret = 0;for (int i : nums) {ret ^= i;}return ret;
}

多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:[3,2,3]
输出:3
示例 2:
输入:[2,2,1,1,1,2,2]
输出:2

数组中出现次数超过一半的数字,一定是排好序之后,中间位置的数字。

/*** 排序法* 将数组排序后,数组n/2的元素一定是众数*/
public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length/2];
}

存在连续三个奇数的数组

给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。
示例 1:
输入:arr = [2,6,4,1]
输出:false
解释:不存在连续三个元素都是奇数的情况。
示例 2:
输入:arr = [1,2,34,3,4,5,7,23,12]
输出:true
解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。

本题比较简单,数字是连续出现的,所以我们只需要定义一个计数器,如果连续出现的次数超过3,则返回true。

public boolean threeConsecutiveOdds(int[] arr) {// 引入标志位记录连续出现奇数的个数int count = 0;for (int i = 0; i < arr.length; i++) {if (isConsecutiveOdd(arr[i])) {// 出现奇数,count ++;count ++;if (count == 3) {// 出现连着三个奇数,返回truereturn true;}}else {// 碰到偶数,count重置count = 0;}}return false;
}private boolean isConsecutiveOdd(int num) {return num % 2 != 0;
}

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

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

相关文章

使用Vue.js和Vuex构建可维护的前端应用

使用Vue.js和Vuex构建可维护的前端应用 Vue.js简介 安装Vue.js 使用npm安装 使用CDN引入 创建Vue项目 安装Vuex 初始化Vuex Store 在Vue组件中使用Store Vuex模块化 Vuex命名空间 Vuex插件 Vuex热重载 Vuex持久化状态 Vuex调试工具 Vuex的高级用法 异步Actions 中间件 Vuex的…

小新学习k8s第四天之发布管理

一、金丝雀发布&#xff08;灰度发布&#xff09; Deployment控制器支持自定义控制更新过程中的滚动节奏&#xff0c;如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程&#xff0c;此时&#xff0c;仅存在一部分新版本的…

机器人领域中的scaling law:通过复现斯坦福机器人UMI——探讨数据规模化定律(含UMI的复现关键)

前言 在24年10.26/10.27两天&#xff0c;我司七月在线举办的七月大模型机器人线下营时&#xff0c;我们带着大家一步步复现UMI「关于什么是UMI&#xff0c;详见此文&#xff1a;UMI——斯坦福刷盘机器人&#xff1a;从手持夹持器到动作预测Diffusion Policy(含代码解读)」&…

项目模块1~12总结:服务器大模块梳理

一、思维导图 二、设计思路 1、各种回调函数梳理 服务器里面包含了监听套接字和监听到的通信套接字&#xff08;新连接&#xff09;&#xff0c;我们要对这两种套接字进行设置回调函数&#xff0c;其中监听套接字里面只要设置读回调&#xff0c;通信套接字要设置5种回调&…

【django】Django REST Framework 序列化与反序列化详解

目录 1、什么是序列化和反序列化&#xff1f; 2、Django REST Framework中的序列化和反序列化 3、安装与配置&#xff08;第10章是从零开始&#xff09; 3.1 安装 3.2 配置 4、基本使用 4.1 创建序列化器 4.2 使用序列化器&#xff08;将数据序列化返回给前端&#xff…

三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库

官网文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ SQL (关系型) 数据库 FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 这里我们将看到一个使用SQLModel的示例。 SQLModel是在SQLAlchemy和Pydantic的基础…

C++中使用seekg函数进行随机读写

seekg&#xff08;off type offset, ios::seekdir origin ); //作用:设置输入流的位置 这个函数有俩个参数&#xff0c;第一个是表示偏移量&#xff0c;第二个是表示相对位置 infile.seekg(-50, infile.end);//表示从文件结尾开始&#xff0c;向文件开头方向读50个字节 参数 …

2-137 基于matlab的sigmoid函数的变步长自适应语音信号增强

基于matlab的sigmoid函数的变步长自适应语音信号增强&#xff0c;与传统LMS相对比&#xff0c;比较不同的变步长函数去噪效果&#xff0c;并基于较好的去噪算法分析不同变步长中参数变化对降噪的影响。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-13…

有效利用关键词研究工具提升网站流量的策略

内容概要 在当前信息泛滥的时代&#xff0c;关键词研究工具的重要性愈发突出。它们不仅能帮助我们识别和分析用户搜索行为&#xff0c;还能够精准地为网站内容定位&#xff0c;确保我们能够吸引并留住目标受众。关键词研究工具通过提供大量的数据&#xff0c;帮助站长和营销策…

探索全托的自闭症学校:打造个性化成长场所

文章详情&#xff1a;http://www.zibizhengwang.com/page35.html 在广州这座充满活力的城市里&#xff0c;有一个特别的地方&#xff0c;它以独特的教育理念和深切的关怀之心&#xff0c;为自闭症儿童提供了一个温暖的避风港。这个地方就是星贝育园自闭症儿童寄宿制学校&#…

使用RabbitMQ实现微服务间的异步消息传递

使用RabbitMQ实现微服务间的异步消息传递 RabbitMQ简介 安装RabbitMQ 在Ubuntu上安装RabbitMQ 在CentOS上安装RabbitMQ 配置RabbitMQ 创建微服务 生产者服务 安装依赖 生产者代码 消费者服务 消费者代码 运行微服务 消息模式 直接模式 生产者代码 消费者代码 扇出模式 生产…

Yolo V4详解

Yolo V4&#xff08;You Only Look Once version 4&#xff09;是一种先进的目标检测系统&#xff0c;于2020年推出。作为Yolo系列算法的最新版本&#xff0c;Yolo V4继承了其前代版本的优点&#xff0c;并在此基础上进行了多项改进&#xff0c;使得其性能得到了显著提升。本文…

Pandas数据结构之Series对象

文章目录 1. DataFrame对象1.1 创建DataFrame对象1.2 DataFrame对象常用属性和方法1.3 布尔值列表获取DataFrame对象中部分数据1.4 DataFrame对象的运算 1. DataFrame对象 DataFrame是一个表格型的结构化数据结构&#xff0c;它含有一组或多组有序的列&#xff08;Series&…

Tomcat 11 下载/安装 与基本使用

为什么要使用Tomcat&#xff1f; 使用Apache Tomcat的原因有很多&#xff0c;以下是一些主要的优点和特点&#xff1a; 1. 开源与免费 Tomcat是一个完全开源的项目&#xff0c;任何人都可以免费使用。它由Apache软件基金会维护&#xff0c;拥有一个活跃的社区&#xff0c;这…

换热器换热面积计算

1 容积式水加热器换热面积计算 式中Q—设计小时耗热量&#xff08;W&#xff09; ε—由于水垢、热媒分布不均匀等影响传热效率的系数&#xff0c;一般采用0.8~0.6 K—传热系数[W/(m2ˑ℃)]&#xff0c;K值对加热器换热影响很大&#xff0c;主要取决于热媒种类和压力、热媒和…

幸福宝宝起名器

这段代码是一个简单的“幸福宝宝取名器”网页应用&#xff0c;主要功能是根据用户输入的姓氏、性别和生成数量&#xff0c;随机生成宝宝的名字。以下是代码的主要组成部分和功能简介&#xff1a; 1. HTML 结构 - 文档类型和语言&#xff1a;使用 <!DOCTYPE html> 声明文…

BLG与T1谁会赢?python制作预测程序,结果显示,BLG将打败T1

决赛预测 2024英雄联盟全球总决赛 2024年英雄联盟全球总决赛&#xff0c;今天晚上&#xff08;2024年11月2日22点&#xff09;就要开始了&#xff01;今年的总决赛的队伍是BLG与T1。当然一些老的lol玩家&#xff0c;现在可能对于lol关注不多&#xff0c;并不清楚这两个队伍。…

Spring Boot 3.x 整合 Druid 数据库连接池(含密码加密)

Spring Boot 3.x 整合 Druid 数据库连接池&#xff08;含密码加密&#xff09; 1. 为什么需要数据库连接池&#xff1f; 在传统的数据库连接中&#xff0c;每一次与数据库连接都会消耗大量的系统资源和时间。数据库连接池会提前创建一定数量的数据库连接保存在池中&#xff0…

完美解决“找不到MSVCR110.dll无法继续执行代码

msvcr110.dll是一个动态链接库&#xff08;Dynamic Link Library&#xff0c;简称DLL&#xff09;文件&#xff0c;它是Microsoft Visual C 2012 Redistributable Package的一部分。这个库文件包含了大量预先编写的函数和资源&#xff0c;用于支持那些使用Visual C 2012或与之兼…

C++【string的模拟实现】

在前文我们讲解了string类接口使用&#xff08;C【string类的使用】(上),C【string类的使用】&#xff08;下&#xff09;&#xff09;&#xff0c;本片文章就来模拟实现string类。 注&#xff1a;本文实现的是string的部分重点内容&#xff0c;目的是为了更好的了解string&…