当前位置:网站首页>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);
}
};```
边栏推荐
猜你喜欢

mapbox-gl开发教程(十一):加载线图层

Penguin E-sports stops, and tiger teeth are hard to walk

元宇宙的定义和 7 大无限特征

The relationship between trees, forests and binary trees

matplotlib plt. Specific usage of text() - labeling points in a drawing

如何运行plink软件--三种方法

Swift 3pThread tool Promise Pipeline Master/Slave Serial Thread confinement Serial queue

IIS安装 部署网站

Brands are difficult to establish, IPO is difficult, and Chinese tea enterprises are trapped in "tradition"?

mmdetection之dataset类解读
随机推荐
Numpy np set_ Usage of printoptions () -- control output mode
基于Feign远程调用
Online communication skill network: a sparse model for solving multi task and multi-modal problems (Qingyuan talk, issue 19, tangduyu)
Summary of vim common commands
Canvas大火燃烧h5动画js特效
企鹅电竞停步,虎牙也难行
Importerror: libgl. so. 1: cannot open shared object file: no such file or directory
Mmdetection build_ Optimizer module interpretation
分享这位大神的WPF界面设计系列视频
路由器实验之serial接口的静态路由配置(补充)
一个WPF开发的打印对话框-PrintDialogX
mmdetection之dataloader构建
Vim常用命令总结
The relationship between trees, forests and binary trees
软件项目管理 6.10.成本预算
Draw confusion matrix
High number_ Chapter 6 infinite series__ Properties of positive series
[the second revolution of report tools] optimize report structure and improve report operation performance based on SPL language
我在做一件很酷的事情
mapbox-gl开发教程(十一):加载线图层