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

第30天(中等题 二分查找)

打卡第三十天
2道中等题

image

题目:
image

思路:因为正方形中心固定,所以边长越大,包括的点也就越多。问题转换为求正方形的最大边长。若正方形的边长为2r,则所有横坐标的绝对值小于等于 r,且纵坐标的绝对值也小于等于 r 的点都会在正方形里。检查这些点是否有重复标签即可。

代码:

class Solution {
public:int maxPointsInsideSquare(vector<vector<int>>& points, string s) {int ans = 0;// 存储最终结果:正方形内最多能容纳的标签不重复的点数auto check = [&](int size) -> bool{// 定义lambda函数check,用于检查给定边长的正方形是否能容纳标签不重复的点int vis = 0;// 用位掩码记录已经出现的标签,每个bit代表一个字母(a-z)for (int i = 0; i < points.size(); i++){if (abs(points[i][0]) <= size && abs(points[i][1]) <= size) {char c = s[i] - 'a';// 将字符转换为0-25的数字if (vis >> c & 1){return false;// 如果重复出现,返回false}vis |= 1 << c;// 标记该标签已出现(将对应bit设为1)}}ans = __builtin_popcount(vis);// 计算vis中标签不重复的点数return true;};int left = -1, right = 1'000'000'001;while (left + 1 < right){// 二分查找int mid = (left + right) / 2;(check(mid) ? left : right) = mid;// 如果mid满足条件,尝试更大的;否则尝试更小的}return ans;}
};

耗时≈1.5小时 明天继续

http://www.rkmt.cn/news/54676.html

相关文章:

  • 腾讯云ubuntu服务器初始化
  • 现实的一切,都是自指自洽的道德因果逻辑态
  • Firefox扩展界面优化与浏览器技术更新
  • 11月19日日记
  • 代码随想录Day15_二叉树
  • 什么是代币?从ERC-20开始 - all-in
  • Yanhua Mini ACDP-2 BMW CAS Package: Advanced CAS ISN Module Programming for N20/N55/B38
  • 发布与订阅者模式-复盘
  • 20232307 2025-2026-1 《网络与系统攻防技术》实验七实验报告
  • 《R语言医学数据分析实战》学习记录--第一章 R语言介绍
  • 李克特量表(Likert scale)
  • java---maven
  • 状语从句学案
  • 用 Rust 与 Tesseract 进行英文数字验证码识别
  • contig 和 scaffold的区别和联系
  • linux ftp脚本
  • Yanhua Mini ACDP-2 BMW ECU Package: EUC Clone License with Modules 3/8/27 Bench Interface Board
  • [Python刷题记录]-搜索插入位置-二分查找-简单
  • 告别低效备考!2025雅思封闭班培训机构深度测评
  • mariadb galera集群在Openstack中的应用 - T
  • linux ftp慢
  • 2025年11月水泵,多级水泵,消防水泵公司推荐:扬程适配性与能效等级测评
  • linux ftp同步
  • LEANN:一个极简的本地向量数据库
  • 【触想智能】工业一体机在户外使用要注意的问题分享
  • 完整教程:AI研究-109-具身智能 机器人模型验证SOP流程详解|仿真 现实 回放 模板理论
  • linux ftp 端口查看
  • noip10
  • Windows11系统安装Docker
  • 详细介绍:C++/Java如何与AI深度结合?开发者必看指南