当前位置: 首页 > 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.jsqmd.com/news/45063/

相关文章:

  • 2025云南旅行社首选——中青国旅“用心陪着你”,定制游+自驾游杜绝套路,纯净体验
  • Debian 12/13可用的华宇拼音输入法
  • 拆解一个真实电商项目:微服务架构中的服务治理与性能优化
  • VB6版Dll文件注册器 - 开源研究系列文章 - 个人小作品
  • win10里面的中文输入法在左上角的带有绿色箭头
  • [Flink] Apache Stream Park : 一站式的流处理计算开发运管平台
  • linux . profile修改
  • linux -xr
  • linux echo gt;命令
  • 2025沧州防水补漏、防水、漏水维修、堵漏、漏水检测工程单位靠谱推荐:连锁企业,深耕本地市场,沧州极冠防水实力出圈
  • linux -static
  • 腾讯云ubuntu服务器初始化
  • 每日反思(2025年11月19日)
  • Linux脚本工具
  • 11.19 P9532 前缀和
  • Adobe Flash Player 更新提示:版本过旧,不支持运行,请升级后使用,查看升级详情
  • 2025沧州防水、漏水维修、堵漏、漏水检测、防水补漏公司最新top5推荐:老旧房屋 / 新房漏水/商业工建防水解决方案排行
  • c++ activemq如何实现负载均衡
  • 现实的一切,都是自指自洽的道德因果逻辑态
  • Firefox扩展界面优化与浏览器技术更新
  • 11月19日日记
  • 前端跨标签页通信方案(下)
  • js 如何debug SharedWorker
  • 代码随想录Day15_二叉树
  • 2025农膜厂商最新top推荐:三光膜/ 大棚膜/水池布优质供应商
  • 什么是代币?从ERC-20开始 - all-in
  • NCHU-OOP-前三次大作业总结 - AC
  • Yanhua Mini ACDP-2 BMW CAS Package: Advanced CAS ISN Module Programming for N20/N55/B38
  • NCHU-OO-前三次大作业总结 - AC
  • Postman关于AES的加解密