寒假刷题Day19

devtools/2025/2/2 21:34:22/

一、923. 三数之和的多种可能

class Solution {
public:int threeSumMulti(vector<int>& arr, int target) {const int MOD = 1'000'000'007; // 正确的模数long long ans = 0; // 使用 long long 防止溢出std::sort(arr.begin(), arr.end());for (size_t i = 0; i < arr.size(); ++i) {int T = target - arr[i];size_t j = i + 1, k = arr.size() - 1;while (j < k) {if (arr[j] + arr[k] < T) {j++;} else if (arr[j] + arr[k] > T) {k--;} else if (arr[j] != arr[k]) { int left = 1, right = 1;while (j + 1 < k && arr[j] == arr[j + 1]) {left++;j++;}while (k - 1 > j && arr[k] == arr[k - 1]) {right++;k--;}ans += static_cast<long long>(left) * right; // 避免溢出ans %= MOD;j++;k--;} else {long long M = k - j + 1;ans += (M * (M - 1) / 2) % MOD; // 避免溢出ans %= MOD;break;}}}return static_cast<int>(ans);}
};

static_cast<long>(value)在编译时进行类型转换,比c风格的(long)value更安全更清晰

二、948. 令牌放置

思路:点数小的得分,大的吃掉,当不够获得最小令牌的分时候,吃一个最大的令牌

class Solution {
public:int bagOfTokensScore(vector<int>& tokens, int P) {if (tokens.empty()) return 0;sort(tokens.begin(), tokens.end());if (P < tokens[0]) return 0;int N = tokens.size();int left = 0;int right = N - 1;int score = 0;int res = 0;while (left <= right) {if (P < tokens[left]) {if (score <= 0) return res;P += tokens[right];--score;--right;} else {P -= tokens[left];++score;++left;res = max(res, score);}}return res;}
};


http://www.ppmy.cn/devtools/155543.html

相关文章

IO流操作

目录 一、字符集 常见字符集 编码、解码操作 二、IO流 FileInputStream FileOutputStream FileReader FileWriter 三、打印流 PrintStream 一、字符集 常见字符集 我们的计算机底层是不可以直接存储字符的&#xff0c;计算机中底层只能存储二进制(0、1)&#xff0c…

软件工程概论试题二

一、单选 1. 下面的说法是哪种视角对系统进行建模?“对系统与环境之间或系统构件之间的交互进行建模 A. 外部视角 B.交互式视角 C.结构化视角 D.行为视角 正答:B 2.下面描述是从哪种视角对系统进行建模的? “对系统的体系结构和系统处理的数据的结构建模”。 A.外部视角 B.交…

PostgreSQL技术内幕24:定时任务调度插件pg_cron

文章目录 0.简介1.基础知识2.pg_cron安装使用方式2.1 安装pg_cron2.2 使用方式 3.实现原理3.1 启动过程3.2 任务添加和管理3.3 调度过程3.4 执行原理 0.简介 pg_cron是PostgreSQL中的一个简单的基于cron的任务调度插件&#xff0c;本文将从其基础知识&#xff08;Linux中Cron的…

PostgreSQL 数据查询操作(排序、筛选、连接、分组、子查询)

&#xff08;1&#xff09;排序查询与筛选查询操作 排序查询使用ORDER BY&#xff0c;对某个表中的列1按照列升序&#xff08;ASC&#xff0c;默认升序&#xff09;或降序&#xff08;DESC&#xff09;排序&#xff0c;排序后展示列1和列2两列。此外&#xff0c;也可以按照多列…

MySQL数据类型转换应注意什么?

文章目录 1. **隐式转换**2. **显式转换**3. **数据截断**4. **字符集与排序规则**5. **日期和时间转换**6. **数值转换**7. **NULL 处理**8. **性能影响**9. **错误处理**10. **函数选择**示例总结 在 MySQL 中进行数据类型转换时&#xff0c;需要注意以下几个关键点&#xff…

基于Cipher的Java加密工具类

一、什么是Cipher Cipher是一种用于加密和解密信息的算法或方法。它将原始的明文转化为密文&#xff0c;从而保护信息的安全性和机密性。使用密码学中的数学原理和技术&#xff0c;Cipher可以对数据进行加密处理&#xff0c;使其在传输或存储过程中对未授权的访问者不可读。在必…

LVGL+FreeRTOS实战项目:智能健康助手(lcd篇)

1.8寸彩色TFT显示屏简介 接线图 我们选用的是分辨率为128*160的彩色显示屏&#xff0c;采用的SPI接口&#xff0c;通过我们STM32的SPI外设&#xff0c;来和我们的屏幕进行通信&#xff0c;以显示我们需要显示的图片。 软件部分 #include "lcd_driver.h"//液晶IO初始…

2015年蓝桥杯第六届CC++大学B组真题及代码

目录 1A&#xff1a;奖券数目&#xff08;填空_简单枚举&#xff09; 2B&#xff1a;星系炸弹&#xff08;填空_日期计算&#xff09; 3C&#xff1a;三羊献瑞&#xff08;填空_全排列&#xff09; 4D&#xff1a;格子中输出&#xff08;代码填空&#xff09; 5E&#xff1…