【java】力扣 合法分割的最小下标

文章目录

  • 题目链接
  • 题目描述
  • 思路
  • 代码

题目链接

2780.合法分割的最小下标

题目描述

在这里插入图片描述

思路

这道题是摩尔算法的一种扩展
我们先可以找到候选人出来,然后去计算他在左右两边元素出现的次数,只有当他左边时,左边出现的次数2 >左边的长度,右边出现的次数2>右边的长度时 他才算做支配元素
先计算候选人在数组出现的总次数,然后再分别算左右出现的次数,然后算出
左边出现的次数2 >左边的长度,右边出现的次数2>右边的长度 此时的下标多少

代码

public int minimumIndex(List<Integer> nums) {
        int goal = findNum(nums);
        int count =0;
        for(int i=0;i<nums.size();i++){
            if(nums.get(i) ==goal)
                count++;
        }
        //左边众数出现的次数
        int countLeft =0;
        //右边众数出现的次数
        int countRight = count;

        //左边数组的元素个数
        int sizeLeft =1;
        //右边数组的元素个数
        int sizeRight = nums.size()-1;

        for(int i=0;i<nums.size();i++,sizeLeft++,sizeRight--){
            //记录当前元素
            int x =nums.get(i);
            if(x== goal){
                countLeft++;
                countRight--;
            }
            if(countLeft *2 >sizeLeft && countRight *2>sizeRight)
                return i;
        }
        return -1;
    }
    public int findNum(List<Integer> nums){
        int goal = 0;//候选人
        int count = 0;//候选人的票数
        for(int i=0;i<nums.size();i++){
            if(count == 0){
                goal = nums.get(i);
                count = 1;
            } else if(nums.get(i) ==goal){
                count++;
            }else{
                count--;
            }
        }
        return goal;
    }

感谢您的收看!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】拷贝构造函数及析构函数

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

百分点科技签约潍坊市数据产业发展战略合作

近日&#xff0c;潍坊市数据产业发展战略合作签约仪式举行&#xff0c;潍坊市人民政府副市长张震生&#xff0c;潍坊市财政局党组书记、局长王金祥&#xff0c;潍坊市大数据局党组书记陈强出席大会并致辞。百分点科技受邀进行战略合作签约&#xff0c;共同见证潍坊市数据要素市…

力扣—长度最小的子数组

文章目录 题目解析解题思路代码实现 题目解析 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回…

捷配笔记-HDI板与普通PCB板的区别

HDI是什么? HDI(High Density Interconnect) 全称高密度互连板&#xff0c;是一种线分布密度高的高密度电路板&#xff0c;在现代电子设备中扮演着至关重要的角色。 它具有轻薄、线路密度高、有利于先进构装技术的使用、电气特性与信号更佳、改善射频干扰/电磁波干扰/静电释放…

matlab PID tuner整定工具箱的用法

从主页的APP中搜索到它&#xff1a; 按照下图IMPORT导入被控对象的传递函数 在下图的Inspect按钮中可以看到导入的被控对象的传函。 在下图的Type中选择控制器类型&#xff1a; 在下图的Form中选择PID的形式&#xff1a;有两种可选&#xff1a;平行式Parallel和标准式Standard …

K8S 上部署 Emqx

文章目录 安装方式一&#xff1a;快速部署安装方式二&#xff1a;定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 Pod3. 使用 Services 公开 EMQX Broker Pod 服务4. 通过 kubernetes 自动集群 EMQX MQTT 服务器5. 修改 EMQX Broker 的配置6. 赋予 Pod 访…

阿里云短信PHP集成api类

无需安装sdk扩展包&#xff0c;直接引入类即可使用 V3版本请求体&签名机制:自研请求体和签名机制 - 阿里云SDK - 阿里云 模版内容&#xff1a; <?phpnamespace common\components;use common\constant\UserConst; use common\models\bee\SmsReferer; use common\mode…

【VScode】安装【ESP-IDF】插件及相关工具链

一、ESP-IDF简介 二、VScode安装ESP-IDF插件 三、安装ESP-IDF、ESP-IDF-Tools以及相关工具链 四、测试例程&编译烧录 一、ESP-IDF简介 二、VScode安装ESP-IDF插件 【VScode】安装配置、插件及远程SSH连接 【VSCode】自定义配置 打开VScode&#xff0c;在插件管理搜索esp…

【程序大侠传】服务发布引发mq消息重复消费

前序 在编程武侠世界中&#xff0c;有一个门派“天机楼”&#xff0c;连接并协调各大门派之间的关系&#xff0c;确保整个江湖的运作流畅无阻。天机楼住要的业务范围主要如下&#xff1a; 信息传递的信使&#xff1a; 天机楼就像是江湖中的飞鸽传书&#xff0c;确保各门派之间…

泛微Ecology8明细表对主表赋值

文章目录 [toc]1.需求及效果1.1 需求1.2 效果2.思路与实现3.结语 1.需求及效果 1.1 需求 在明细表中的项目经理&#xff0c;可以将值赋值给主表中的项目经理来作为审批人员 1.2 效果 在申请人保存或者提交后将明细表中的人名赋值给主表中对应的值2.思路与实现 在通过js测…

【大型实战】企业网络实验(华为核心交换、ESXI7.0vmware虚拟机、DHCP中继、服务端网络及用户端网络配置)

需求 实验 vmware网络配置&#xff08;企业内部一般为ESXI&#xff09; 这样服务器虚拟机使用192.168.200.X网段才能与用户侧互通 vmware虚拟机配置&#xff08;DHCP服务器网络配置&#xff09; 打开网络管理页面 nmtui重置一下网络连接&#xff08;重启网卡&#xff09; …

JAVA @interface自定义注解(自定义注解+环绕通知 记录操作日志)

简介 注解interface是一种在Java代码中添加元数据&#xff08;metadata&#xff09;的方式&#xff0c;它可以用于提供程序的额外信息&#xff0c;但本身并不会直接影响程序的执行。注解可以应用于类、方法、字段和其他程序元素&#xff0c;用于提供关于这些元素的额外信息。 …

计算机组成原理 运算器

运算方法和运算器&#xff08;重点&#xff09; B二进制(binary), D十进制(decimal), H十六进制(hexadecimal) 纯小数和纯整数表示范围 设机器字长n1位&#xff0c;规定最高位&#xff08;第n1位&#xff09;为符号位 纯小数最大范围中的可理解为小数部分全为0的“1”&#…

TCP连接三次握手的过程,为什么是三次,可以是两次或者更多吗?

(1) 三次握手的过程 第一次握手&#xff1a;客户端向服务器发送一个包含SYN &#xff08;同步序列编号&#xff09;和初始序列号&#xff08;ISN&#xff09;的报文&#xff0c;请求建立连接&#xff0c;客户端进入SYN_SENT (同步已发送)状态。第二次握手&#xff1a;服务器收…

Python酷库之旅-第三方库Pandas(027)

目录 ​一、用法精讲 68、pandas.infer_freq函数 68-1、语法 68-2、参数 68-3、功能 68-4、返回值 68-5、说明 68-6、用法 68-6-1、数据准备 68-6-2、代码示例 68-6-3、结果输出 69、pandas.interval_range函数 69-1、语法 69-2、参数 69-3、功能 69-4、返回值…

Open3D Ransac拟合空间直线

目录 一、概述 1.1实现步骤 1.2优势与局限 二、代码实现 2.1关键代码 2.2完整代码 三、实现效果 前期试读&#xff0c;后续会将博客加入该专栏&#xff0c;欢迎订阅 Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、概述 RANSAC&…

VScode终端和外部终端中文乱码问题

VScode终端和外部终端中文乱码问题 前言VScode终端VScode的第二大特点方法一方法二外部终端&#xff08;命令为ctrlf5&#xff09; 总结实现VScode终端和外部终端都能运行可执行文件 心得 前言 如果只想要看解决方案可直接跳转到总结部分&#xff0c;其余的章节只是用来说明原…

解决C#读取US7ASCII字符集oracle数据库的中文乱码

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录 前言一、解决方法二、安装System.Data.OleDb连接库三…

第7章 模块(2)

目录 7.3 插入和删除模块 7.3.1 模块的表示 7.3.2 依赖关系和引用 7.3.3 模块的二进制结构 7.3.4 插入模块 7.3.5 移除模块 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 7.3 插入和删除模块 两个系统调用&#xff1a; init_module&#xff1…

考研数学二战,怎么准备才能提升大?

一战70多...二战提升空间那是相当的大 我身边很多一战甚至不到60&#xff0c;二战成绩飙到120的&#xff0c;真的很猛 所以你根本不用担心是自己学数学没天赋&#xff0c;其实知识方法没用对而已 本人属于基础很差相当于是零基础的23考研党&#xff0c;经过一年备考成功上岸…