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

【LeetCode周赛】第388场周赛

目录

  • 100233. 重新分装苹果 简单
  • 100247. 幸福值最大化的选择方案 中等
  • 100251. 数组中的最短非公共子字符串 中等
  • 100216. K 个不相交子数组的最大能量值 困难

100233. 重新分装苹果 简单

100233. 重新分装苹果

分析:
排序+贪心

代码:

class Solution {
public:int minimumBoxes(vector<int>& apple, vector<int>& capacity) {int cnt = accumulate(apple.begin(), apple.end(), 0);sort(capacity.begin(), capacity.end());int i=capacity.size()-1;for(;i>=0&&cnt>0;i--){cnt-=capacity[i];}return capacity.size()-i-1;}
};


100247. 幸福值最大化的选择方案 中等

100247. 幸福值最大化的选择方案

分析:
排序+贪心。
每次选择当前幸福值最大的孩子,其余孩子幸福值均减小1,直至减小至0。

代码:

class Solution {
public:long long maximumHappinessSum(vector<int>& happiness, int k) {long long ans=0;sort(happiness.begin(), happiness.end());int i=happiness.size()-1,cnt=0;while(k--){ans+=(1LL*(max(happiness[i]-cnt,0)));cnt++;i--;}return ans;}
};


100251. 数组中的最短非公共子字符串 中等

100251. 数组中的最短非公共子字符串

分析:

代码:
利用map实现哈希表,后续需要学习字符串哈希

class Solution {
public:vector<string> shortestSubstrings(vector<string>& arr) {unordered_map<string, int> m,mine;vector<string> ans;int n=arr.size();for(int i=0;i<n;i++){int l=arr[i].length();mine.clear();for(int j=1;j<=l;j++){for(int k=0;k+j-1<l;k++){string s= arr[i].substr(k,j);if(mine[s]==0){ // 同一个字符串中的字符只计算一次m[s]++;mine[s]++;}}}}for(int i=0;i<n;i++){int l=arr[i].length();for(int j=1;j<=l;j++){vector<string> a;for(int k=0;k+j-1<l;k++){string s = arr[i].substr(k, j);if(m[s]==1){a.push_back(s);}}if(a.size()>0){sort(a.begin(),a.end());ans.push_back(a[0]);}if(ans.size()>i) break;}if(ans.size()<=i) ans.push_back("");}return ans;}
};

利用 string.find()来进行优化,去除哈希表(利用map实现hash)的使用。

class Solution {
public:vector<string> shortestSubstrings(vector<string>& arr) {int n = arr.size();vector<string> ans(n);for(int i=0;i<n;i++){for(int len=1;len<=arr[i].size();len++){for(int j=0;j+len<=arr[i].size();j++){string s = arr[i].substr(j,len);bool flag = true;for(int k=0;k<n;k++) if(k!=i && arr[k].find(s) != string::npos) {flag=false; break;}if(flag && (ans[i].empty() || s < ans[i])) ans[i]=s;}if(ans[i].size() > 0) break;}}return ans;}
};


100216. K 个不相交子数组的最大能量值 困难

100216. K 个不相交子数组的最大能量值

分析:
前缀和+划分DP,目前还在尝试理解中。

代码:

class Solution {
public:long long maximumStrength(vector<int>& nums, int k) {int n = nums.size();vector<long long> s(n + 1);for (int i = 0; i < n; i++) {s[i + 1] = s[i] + nums[i];// 前缀和}vector<vector<long long>> f(k + 1, vector<long long>(n + 1)); //dp[i][j]表示将0~j-1分成i段for (int i = 1; i <= k; i++) {f[i][i - 1] = LLONG_MIN;long long mx = LLONG_MIN;int w = (k - i + 1) * (i % 2 ? 1 : -1);// 要保证前0~j-1至少有i个元素,同时保证j~n-1至少有k-i个元素for (int j = i; j <= n - k + i; j++) {// 维护 i-1 到 当前 j-1 的最大值// 选择 nums[j-1]且为 第i个子数组的最右端元素,但第 i 个子数组有多少,需要从 i-1 开始一直到 j-1 计算 mx = max(mx, f[i - 1][j - 1] - s[j - 1] * w);// 选择当前值的最大值,选nums[j-1](包含怎么选)或者不选f[i][j] = max(f[i][j - 1], s[j] * w + mx);}}return f[k][n];}
};

相关文章:

  • C while 循环
  • C++ lambda函数个人理解
  • 【话题】2024年AI辅助研发趋势,有那些应用领域
  • 【STL】string各种函数的应用
  • TinyEMU之RISCV-PK编译
  • SpringCloud-Alibaba-Nacos教程
  • vs2022 错误(活动) E1696 无法打开 源 文件 “bits/stdc++.h“解决办法
  • Github上哪些好用的工具
  • 2022 年河南省中等职业教育技能大赛
  • 网络编程:网络编程基础
  • 未来城市:数字孪生技术助力智慧城市构建
  • 高效Go编程: encoding/csv标准库深度解析
  • 深入探索HAProxy:高性能负载均衡器的奥秘
  • HBase安装,配置,启动,检查
  • django-comment-migrate 模型注释的使用
  • 分享一款快速APP功能测试工具
  • 「面试题」如何实现一个圣杯布局?
  • Android组件 - 收藏集 - 掘金
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CAP理论的例子讲解
  •  D - 粉碎叛乱F - 其他起义
  • JavaScript实现分页效果
  • leetcode46 Permutation 排列组合
  • mysql_config not found
  • nfs客户端进程变D,延伸linux的lock
  • Redis的resp协议
  • vue-router 实现分析
  • 基于web的全景—— Pannellum小试
  • 技术:超级实用的电脑小技巧
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 漂亮刷新控件-iOS
  • 前端设计模式
  • 深入浏览器事件循环的本质
  • 数组的操作
  • 说说动画卡顿的解决方案
  • 算法---两个栈实现一个队列
  • 通过npm或yarn自动生成vue组件
  • 系统认识JavaScript正则表达式
  • 项目实战-Api的解决方案
  • 一个项目push到多个远程Git仓库
  • 阿里云重庆大学大数据训练营落地分享
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # Java NIO(一)FileChannel
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)(1.9) MSP (version 4.2)
  • (23)Linux的软硬连接
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (二)WCF的Binding模型
  • (附源码)计算机毕业设计高校学生选课系统
  • (收藏)Git和Repo扫盲——如何取得Android源代码