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

第 494 场周赛Q1+Q2:101018. 构造奇偶一致的数组 I+101020. 构造奇偶一致的数组 II

题目链接:

101018. 构造奇偶一致的数组 I(简单)

101020. 构造奇偶一致的数组 II(中等)

算法原理:

👉对应力扣题解

解法:分类讨论

Ⅰ题

0ms击败100.00%

时间复杂度O(1)

我们发现最终的数组中可以存在负数,同时负数的奇偶数也算在内

分类讨论:

①全是偶数→返回true

②全是奇数→返回true

③同时存在偶数和奇数:一定可构造成全奇数

比如nums=[2,3]

如果构造成全偶数:需要让3变成偶数,但奇数-偶数=奇数:3-2=1,因此构造成全偶数不可能

如果构造成全奇数:需要让2变成奇数,偶数-奇数=奇数:2-3=-1,可以→返回true

再举个例子nums=[2,3,5]

如果构造成全偶数:3→-2:3-5,5→2:5-3,最终构造出[2,-2,2]→返回true

如果构造成全奇数:2-3=-1或2-5=-3均可,最终构造出[-1,3,5]或[-3,3,5]→返回true

还有别的情况吗?没了!因此最终结果一定为true,直接返回true

Ⅱ题

105ms击败11.65%

时间复杂度O(N logN)

Ⅱ题在Ⅰ题上加了限制:最终的数组中不能存在负数

①全是偶数→返回true

②全是奇数→返回true

③同时存在偶数和奇数:排序后第一个数是奇数→返回true

整体思路:

最小的数不能改(保证非负),且所有数都可以减最小的数(不减自己就行),因此以最小的数的奇偶性来构造

奇数-偶数=奇数:例如[2,3],3不可能变成偶数

偶数-奇数=奇数:例如[1,2],2可以变成奇数

因此最终结果取决于排序后的第一个数:

是奇数→返回true

是偶数→返回false

优化

既然同时存在奇数和偶数时我们仅需判断最小数的奇偶性即可,那么我们可以用一次遍历来找最小数,避免使用高复杂度的排序

Java代码:

class Solution { //101018. 构造奇偶一致的数组 I public boolean uniformArray(int[] nums1) { return true; } }
class Solution { //101020. 构造奇偶一致的数组 II public boolean uniformArray(int[] nums1) { int cnt0=0,cnt1=0; for(int x:nums1){ if(x%2==0) cnt0++; else cnt1++; } //全是奇数或全是偶数就返回true if(cnt0==0||cnt1==0) return true; List<Integer> list=new ArrayList<>(); for(int x:nums1) list.add(x); Collections.sort(list); return list.get(0)%2==1; } }
class Solution { //101020. 构造奇偶一致的数组 II //优化 public boolean uniformArray(int[] nums1) { int cnt0=0,cnt1=0,mn=0x3f3f3f3f; for(int x:nums1){ mn=Math.min(x,mn); if(x%2==0) cnt0++; else cnt1++; } return cnt0==0||cnt1==0||mn%2==1; } }
http://www.jsqmd.com/news/518721/

相关文章:

  • 若依数据权限深度解析:从@DataScope注解到SQL拼接的全链路追踪
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的道路交通信号标志检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • Simulink信号源模块隐藏技巧:90%用户不知道的Band-Limited White Noise和Chirp Signal高级配置
  • 帮你从算法的角度来认识数组------( 二 )
  • Android相机开发避坑指南:从Camera1到CameraX的实战迁移心得
  • 手把手玩转双目三维重建:从摄像头到点云工厂
  • 算法优化的多层缓存映射与访问调度模型的技术7
  • [Java EE 进阶] SpringBoot 配置文件全解析 : properties 与 yml 的使用与实战 (ULTRA)
  • 告别卡顿:FFmpeg多线程硬解码配置详解(以D3D12VA为例)
  • Cursor套壳Kimi败露,最强「自研」模型被锤!创始人:忘记署名了
  • DevSecOps实战 | 如何利用Black Duck实现开源组件安全与合规的左移策略
  • 海南某神秘211校赛 不要再打女神异闻录了!
  • 算法工程中的可扩展性与分布式实现方案的技术7
  • GATK全流程线程数配置保姆级指南:从BWA到MergeVcfs,一文搞定所有核心数设置
  • Prometheus时间同步问题排查指南:从浏览器到服务器的72秒差异修复实战
  • 数组下标为什么从0开始
  • 计算机毕业设计springboot基于的共享单车管理系统 基于Spring Boot的智慧出行单车运营服务平台 基于Spring Boot的无桩共享单车全生命周期管理系统
  • 银河麒麟系统版本溯源:5分钟教你用命令行查清Linux发行版的‘家族背景‘
  • 别再为FPGA程序裸奔发愁了!手把手教你用Quartus和USB Blaster II搞定AES256加密
  • 算法教学中的抽象建模与动态可视化设计的技术7
  • 【GitHub项目推荐--OpenClaw Dashboard:AI 智能体的可视化运维中心】⭐⭐
  • 地磁场导航避坑大全:磁偏角/倾角处理中的5个常见错误
  • # 集美大学课程实验报告-实验2:线性表
  • 计算机毕业设计:Python基于Spark与协同过滤的智能图书推荐平台 Django框架 协同过滤推荐算法 书籍 可视化 数据分析 大数据 大模型(建议收藏)✅
  • FB自动化养号实战:RPA脚本编写与AdsPower应用指南
  • 算法设计中的代价函数优化与约束求解的技术7
  • 【GitHub项目推荐--Page Agent:网页内的 GUI 智能体】⭐⭐⭐
  • 虚拟机锁定文件残留问题全解析:从.lck文件清理到权限修复
  • 基于COMSOL平台,探讨二氧化碳驱替甲烷模型:单场效应下的气体驱替效应研究
  • 【GitHub项目推荐--LobsterBoard:OpenClaw 生态的可视化仪表盘构建器】⭐⭐⭐