当前位置:网站首页>LeetCode 321. 拼接最大數***
LeetCode 321. 拼接最大數***
2022-06-10 17:51:00 【暮雨林鐘】
具體思路:
涉及以下點:
- 如何利用單調棧尋找不連續保持相對比特置的前k個值;
- 字符串合並問題;
具體代碼:
class Solution {
public:
vector<int> maxNumber(vector<int>& nums1, vector<int>& nums2, int k) {
int m=nums1.size();
int n=nums2.size();
int start=max(0,k-n),end=min(k,m);//即總和為k情况,start能有多少個比特置;
vector<int> cur(k,0);
for(int i=start;i<=end;i++){
vector<int> q1=pick(nums1, i);
vector<int> q2=pick(nums2,k-i);
vector<int> ret=merage_(q1, q2);
if(cmp(ret, cur,0,0))
cur=ret;
}
return cur;
}
vector<int> pick(vector<int>& vec,int k){
vector<int> st;
int index=0;
int remain=vec.size()-k;//需要剔除多少個元素;
for(int i=0;i<vec.size();i++){
while(!st.empty()&&vec[i]>*st.rbegin()&&remain>0){
remain--;
st.pop_back();
index--;
}
if(index<k){
st.push_back(vec[i]);
index++;
}else{
remain--;
}
}
return st;
}
vector<int> merage_(vector<int>& a,vector<int>& b){
vector<int>ret;
for(int i1=0,i2=0;i1!=a.size()||i2!=b.size();){
if(i1==a.size()){
ret.push_back(b[i2++]);
continue;
}
if(i2==b.size()){
ret.push_back(a[i1++]);
continue;
}
if(a[i1]>b[i2]){
ret.push_back(a[i1++]);
}else if(a[i1]<b[i2]){
ret.push_back(b[i2++]);
}else{
int que=cmp(a,b,i1,i2);
if(cmp(a, b, i1, i2)>0){
ret.push_back(a[i1++]);
}else{
ret.push_back(b[i2++]);
}
}
}
return ret;
}
bool cmp(vector<int>& a,vector<int>& b,int i1,int i2){
int m=a.size();
int n=b.size();
while(i1<m&&i2<n){
if(a[i1]==b[i2]){
i1++,i2++; continue; } if(a[i1]>b[i2]) return true; else return false; } return (m-i1)>(n-i2);
}
};```
边栏推荐
- Numpy numpy中np.set_printoptions()的用法——控制输出方式
- Leetcode 875. Coco, who likes bananas
- 信息学奥赛一本通 1280:【例9.24】滑雪 | OpenJudge NOI 2.6 90:滑雪 | 洛谷 P1434 [SHOI2002] 滑雪
- Swift 3pThread tool Promise Pipeline Master/Slave Serial Thread confinement Serial queue
- mmdetection之model构建
- 2022年T电梯修理考试题模拟考试题库及在线模拟考试
- When V-IF and V-for need to be used at the same time
- 玩转Pytorch的Function类
- Feign based remote call
- 绘制混淆矩阵
猜你喜欢

虚拟机ping不通的几种原因及解决办法

淘宝短视频避坑指南系列之一--彻底了解淘宝短视频

mmcv之Registry类解读

vscode常用快捷键
待办事项桌面插件,办公族的桌面好帮手

Nacos configuration management

目标客户匹配数据表格成功案例展示

matplotlib plt.text()的具体用法——画图时给图中的点加标签

Leetcode 875. Coco, who likes bananas

com.netflix.client.ClientException: Load balancer does not have available server for client: userser
随机推荐
Leetcode 929. 独特的电子邮件地址
2022年T电梯修理考试题模拟考试题库及在线模拟考试
matplotlib plt.text()的具体用法——画图时给图中的点加标签
Nacos配置管理
力扣 20. 有效的括号
嘿!ONES 新星请看过来|师兄师姐说
基于PHP+Web+Mysql的在线问卷调查系统
【抬杠C#】如何实现接口的base调用
Snabbdom 虚拟 dom(一)
分享我做Dotnet9博客网站时积累的一些资料
pands pd.DataFrame()函数详细解析
第七部分:第二课 顾问通用技能-如何安装和卸载SAP ERP系统客户端
High number_ Chapter 6 infinite series__ Absolute convergence_ Conditional convergence
2022版IDEA图形界面GUI乱码解决方法超详细简单版
CUDA realizes efficient search - failed audit?
Why 0.1+0.2=0.3000000000000004
单片机底层通信协议① —— 同步和异步、并行和串行、全双工和半双工以及单工、电平信号和差分信号
厉害了,工信部推出 “一键解绑” 手机号绑定的互联网账号,堪称神器
高数_第6章无穷级数__正项级数的性质
苹果期待的「无密码时代」,真能实现吗?