【Leetcode】3046. 分割数组

devtools/2025/1/1 7:26:17/

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果

题目

题目链接🔗
给你一个长度为 偶数 的整数数组 n u m s nums nums 。你需要将这个数组分割成 n u m s 1 nums1 nums1 n u m s 2 nums2 nums2 两部分,要求:

n u m s 1. l e n g t h = = n u m s 2. l e n g t h = = n u m s . l e n g t h / 2 nums1.length == nums2.length == nums.length / 2 nums1.length==nums2.length==nums.length/2
n u m s 1 nums1 nums1 应包含 互不相同 的元素。
n u m s 2 nums2 nums2也应包含 互不相同 的元素。
如果能够分割数组就返回 t r u e true true ,否则返回 f a l s e false false

示例 1:

输入:nums = [1,1,2,2,3,4] 输出:true 解释:分割 nums 的可行方案之一是 nums1 = [1,2,3] 和
nums2 = [1,2,4] 。

示例 2:

输入:nums = [1,1,1,1] 输出:false 解释:分割 nums 的唯一可行方案是 nums1 = [1,1] 和 nums2
= [1,1] 。但 nums1 和 nums2 都不是由互不相同的元素构成。因此,返回 false 。

提示:

  1. 1 ≤ n u m s . l e n g t h ≤ 100 1 \leq nums.length \leq 100 1nums.length100
  2. n u m s . l e n g t h nums.length % 2 == 0 nums.length
  3. 1 ≤ n u m s [ i ] ≤ 100 1 \leq nums[i] \leq 100 1nums[i]100

思路

要将数组 nums 分割成两个长度相等且元素互不相同的子数组 nums1 和 nums2,直接看出现次数最多的元素有多少个,如果次数大于二肯定分不了,否则一定能分的了。

代码

class Solution {
public:bool isPossibleToSplit(vector<int>& nums) {int arr[105]={0};memset(arr,0,105);int maxzhi=0;for(int i=0;i<nums.size();++i){arr[nums[i]]++;maxzhi=max(maxzhi,arr[nums[i]]);}if(maxzhi>2)return 0;return 1;}
};

复杂度分析

时间复杂度

遍历数组统计元素出现次数的时间复杂度为 O ( n ) O(n) O(n)

空间复杂度

O ( 1 ) O(1) O(1)

结果

在这里插入图片描述


http://www.ppmy.cn/devtools/146581.html

相关文章

人工智能与物联网:从智慧家居到智能城市的未来蓝图

引言&#xff1a;未来已来&#xff0c;智能化的世界 想象一下&#xff0c;一个早晨&#xff0c;智能闹钟根据你的睡眠状态自动调整叫醒时间&#xff0c;咖啡机早已备好热腾腾的咖啡&#xff0c;窗帘缓缓拉开&#xff0c;迎接清晨的阳光。这不是科幻小说中的场景&#xff0c;而是…

基于单片机的智能递口罩机器人设计

本设计是一款智能递口罩机器人&#xff0c;主控器采用STM32单片机&#xff0c;ESP32协同控制&#xff0c;在支持MicroPython的OpenMV机器视觉模块的控制下&#xff0c;实现人脸搜索与识别&#xff0c;进而控制小车的运动及机械臂递口罩动作。这款机器人拥有温湿度传感器&#x…

C# 超高速高性能写日志

原理 使用列队先缓存到内存&#xff0c;独立线程从列队中使用log4net写到磁盘上。 日志写入列队 public void EnqueueMessage(string message, FlashLogLevel level, Exception ex null) {if ((level FlashLogLevel.Debug && _log.IsDebugEnabled)|| (level Flas…

mysql数据库中,一棵3层的B+树,假如数据节点大小是1k,那这棵B+可以存多少条记录(2100万的由来)

在MySQL中&#xff0c;3层的B树可以存储的数据量取决于多个因素&#xff0c;包括页大小、每行数据的大小以及索引项的大小。以下是一个详细的计算过程&#xff1a; 一、假设条件 页大小&#xff1a;在InnoDB存储引擎中&#xff0c;B树的每个节点&#xff08;页&#xff09;大…

python实战项目55:多线程爬取笔趣阁小说

python实战项目55:多线程爬取笔趣阁小说 一、明确需求二、单本小说下载三、使用concurrent.futures线程池模块下载并实现文件合并四、使用threading模块实现多线程下载并合并文件一、明确需求 需求是使用多线程爬取笔趣阁网站小说的所有章节内容并保存,多线程分别使用了conc…

如何在 Ubuntu 22.04 上安装 phpMyAdmin

简介 PHPMyAdmin 是在 Ubuntu 22.04 上管理 MySQL 数据库的绝佳选择。它是一个流行的工具&#xff0c;拥有简单、高效且用户友好的基于 Web 的界面&#xff0c;让你能够轻松地管理 MySQL 数据库。因此&#xff0c;许多开发人员、数据库管理员和网站所有者都信任 PHPMyAdmin 来…

三、Vue 模板语法

文章目录 一、核心概念二、插值操作三、属性绑定四、表达式支持五、指令系统六、用户输入与双向数据绑定七、过滤器八、缩写语法 一、核心概念 Vue.js 的精髓在于其简洁而高效的模板系统。通过这个系统&#xff0c;开发者能够以声明式的方式&#xff0c;轻松地将 DOM 元素与 Vu…

JVM - JVM基础

JVM - JVM基础 文章目录 JVM - JVM基础一&#xff1a;类字节码详解1&#xff1a;Java为何能够跨平台2&#xff1a;Java字节码文件2.1&#xff1a;Class文件的结构属性2.2&#xff1a;从一个例子开始2.3&#xff1a;反编译字节码文件补充说明&#xff1a;类的访问标志补充说明&a…