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

【算法题】100019. 将数组分割成最多数目的子数组

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

题目:

给你一个只包含 非负 整数的数组 nums 。

我们定义满足 l <= r 的子数组 nums[l…r] 的分数为 nums[l] AND nums[l + 1] AND … AND nums[r] ,其中 AND 是按位与运算。

请你将数组分割成一个或者更多子数组,满足:

每个 元素都 只 属于一个子数组。
子数组分数之和尽可能 小 。
请你在满足以上要求的条件下,返回 最多 可以得到多少个子数组。

一个 子数组 是一个数组中一段连续的元素。

示例 1:

输入:nums = [1,0,2,0,1,2]
输出:3
解释:我们可以将数组分割成以下子数组:

  • [1,0] 。子数组分数为 1 AND 0 = 0 。
  • [2,0] 。子数组分数为 2 AND 0 = 0 。
  • [1,2] 。子数组分数为 1 AND 2 = 0 。
    分数之和为 0 + 0 + 0 = 0 ,是我们可以得到的最小分数之和。
    在分数之和为 0 的前提下,最多可以将数组分割成 3 个子数组。所以返回 3 。
    示例 2:

输入:nums = [5,7,1,3]
输出:1
解释:我们可以将数组分割成一个子数组:[5,7,1,3] ,分数为 1 ,这是可以得到的最小总分数。
在总分数为 1 的前提下,最多可以将数组分割成 1 个子数组。所以返回 1 。

提示:

1 <= nums.length <= 10^5
0 <= nums[i] <= 10^6

java代码:

class Solution {public int maxSubarrays(int[] nums) {int ans = 0;int a = -1; // -1 就是 111...1,和任何数 AND 都等于那个数for (int x : nums) {a &= x;if (a == 0) {ans++; // 分割a = -1;}}return Math.max(ans, 1); // 如果 ans=0 说明所有数的 and>0,答案为 1}
}
http://www.lryc.cn/news/182724.html

相关文章:

  • commons-io工具类常用方法
  • 【Typescript】面向对象(上篇),包含类,构造函数,继承,super,抽象类
  • 【python】python中字典的用法记录
  • 基于Java的大学生心理咨询系统设计与实现(源码+lw+部署文档+讲解等)
  • Redis-双写一致性
  • CustomTkinter:创建现代、可定制的Python UI
  • 华为OD机试真题【不含 101 的数】
  • Spring IoC和DI详解
  • mysql-binlog
  • 通过BeanFactotyPostProcessor动态修改@FeignClient的path
  • 数据结构与算法系列-二分查找
  • CSS 毛玻璃特效运用目录
  • 如何在Qt6中引入Network模块
  • 2023/10/4 QT实现TCP服务器客户端搭建
  • 云原生边缘计算KubeEdge安装配置
  • 【LeetCode热题100】--35.搜索插入位置
  • mysql面试题13:MySQL中什么是异步复制?底层实现?
  • SpringBoot-Shiro安全权限框架
  • PostgreSQL基础语法
  • 编程前置:处理Excel表格,定位单元格位置,输入文字前,让AI机器人知道我说什么
  • Linux基本指令介绍系列第四篇
  • 读取vivo手机截图尺寸移动.jpg等文件
  • Web前端-Vue2+Vue3基础入门到实战项目-Day2(指令补充, computed计算属性, watch侦听器, 水果购物车)
  • ffmpeg之去除视频水印
  • 第二章 线性表
  • Java 超高频常见字符操作【建议收藏】
  • MongoDB数据库网站网页实例-编程语言Python+Django
  • 开箱报告,Simulink Toolbox库模块使用指南(七)——S-Fuction Builter模块
  • spring-boot 操作 mongodb 数据库
  • JVM篇---第三篇