Leetcode—2529.正整数和负整数的最大计数【简单】

news/2025/2/5 14:54:35/

2023每日刷题(四)

Leetcode—2529.正整数和负整数的最大计数

在这里插入图片描述

遍历法实现代码

int maximumCount(int* nums, int numsSize){int i;int neg = 0, pos = 0;for(i = 0; i < numsSize; i++) {if(nums[i] < 0) {neg++;}if(nums[i] > 0) {pos++;}}return (neg > pos) ? neg : pos;
}

测试结果

在这里插入图片描述

二分法思想

本质是循环不变量

图片源于灵茶山艾府
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现代码

int lower_bound(int *nums, int numsSize, int target) {int left = 0;int right = numsSize - 1;   // 闭区间[left, right]int mid;while(left <= right) {      //区间不为空mid = left + (right - left) / 2;if(nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return left; 	// 也可以是right + 1
}int lower_bound2(int *nums, int numsSize, int target) {int left = 0;int right = numsSize;   // 左闭右开区间[left, right)int mid;while(left < right) {      //区间不为空mid = left + (right - left) / 2;if(nums[mid] < target) {left = mid + 1;     // [mid + 1, right)} else {right = mid;    // [left, mid)}}return left;     //return right也可以,因为right和left都指向同一个数了
}int lower_bound3(int *nums, int numsSize, int target) {int left = -1;int right = numsSize;   // 开区间(left, right)int mid;while(left+1 < right) {      //区间不为空mid = left + (right - left) / 2;if(nums[mid] < target) {left = mid;     // (mid, right)} else {right = mid;    // (left, mid)}}return right;      // 也可以是left + 1
}int maximumCount(int* nums, int numsSize){int i;int neg = 0, pos = 0;// int tmp = lower_bound(nums, numsSize, 0);// int tmp = lower_bound2(nums, numsSize, 0);int tmp = lower_bound3(nums, numsSize, 0);neg = tmp;// tmp = lower_bound(nums, numsSize, 1);// tmp = lower_bound2(nums, numsSize, 1);tmp = lower_bound3(nums, numsSize, 1);if(tmp == numsSize) {pos = 0;} else {pos = numsSize - tmp;}return (neg > pos) ? neg : pos;
}

使用lower_bound()、lower_bound2()还是lower_bound3()都能成功,这里只是提供三种二分查找函数,我更偏向于第二种

测试结果

在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


http://www.ppmy.cn/news/1171567.html

相关文章

git远程仓库、开发者使用流程、ssh连接

git远程仓库 https://www.cnblogs.com/liuqingzheng/p/15328319.html 远程仓库有&#xff1a; : github gitlab gitee 在gitee上创建了仓库 &#xff08;确保仓库是空的&#xff09;本地&#xff1a;git init本地&#xff1a;git commit -m 提交版本指定远程仓库地址 添加一…

前端 TS 快速入门之四:函数

1. 为函数定义类型 一般使用中&#xff0c;我们可以不必完整写出函数类型&#xff0c;因为 TypeScript 会为我们自动推断出类型&#xff0c;需要注意的是&#xff1a;类型中的参数名称可以不必和值中的参数名称匹配&#xff0c;只要它们类型是兼容的便可。 // 书写完成函数类型…

三刷操作系统之一文带你搞懂FreeRTOS——信号量

信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步,FreeRTOS中信号量又分为二值信号量、计数型信号量、互斥信号量和递归互斥信号量。不同的信号量其应用场景不同。 1.信号量简介 信号量常常用于控制对共享资源的访问和任务同步。举一个很常见的例子,…

阿里企业邮箱域名解析MX记录表

阿里企业邮箱配置需要为域名添加MX解析记录&#xff0c;不只是MX域名解析记录值&#xff0c;还需要为域名添加pop3、imap、smtp及mail等CNAME解析类型&#xff0c;阿里云百科aliyunbaike.com分享阿里云企业邮箱域名MX解析记录类型、记录值及服务器地址&#xff1a; 新版阿里企…

MacOS Mojave(苹果14系统) v10.14.6中文离线安装包

MacOS Mojave是一款先进的操作系统&#xff0c;它拥有诸多出色的特性。其中&#xff0c;夜间模式可以根据时间或用户设置自动切换&#xff0c;改变了UI、壁纸和窗口的样式&#xff0c;使界面在夜晚使用时更为舒适。另外&#xff0c;新的堆栈和群组功能让用户能更方便地分类和整…

hello react

react中文官网 一、什么是react React是一个由Facebook开源的JavaScript库&#xff0c;用于构建用户界面。它基于组件化的思想&#xff0c;将界面拆分成多个独立的、可复用的组件&#xff0c;并通过组件之间的交互构建整个用户界面。React使用虚拟DOM&#xff08;Virtual DOM…

(C语言)力扣189.轮转数组

目录 1.分析 2.代码实现 1.分析 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 首先通过分析&#xff0c;要将数组中的各个元素都挪动位置&#xff0c;所以考虑到&#xff0c;如果在同一数组内操作会因为前面位置已经被…

如何使用 VuePress 搭建博客网站并 Vercel 部署

先来看一下网站截图&#xff1a; 快速上手 1.创建并进入一个新目录 mkdir vuepress-starter && cd vuepress-starter2.使用你喜欢的包管理器进行初始化 yarn init # npm init3.将 VuePress 安装为本地依赖 yarn add -D vuepress # npm install -D vuepress4.创建你…