7-9 删数问题 (10 分)(思路加详解)(1)

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

2.那么这道题我们可以每次删除序列中 升序的结尾,重复上述操作k次,这样的话我们就能可以

这个结果的最优解了

解释:因为在一串数中,我们想要其删完某个数后其剩下的值最小,我们总想删除大的数

那么剩下的数肯定要小呀 比如 12345 删除5剩下的数是最小的

3.当然我们也可以删除每次发生降序的时候 就把前一个数删除

三:上码

===================================================================

/**

思路:1.首先贪心的策略是每次最优,那么结果就是最优的

2.那么这道题我们可以每次删除序列中 升序的结尾,重复上述操作k次,这样的话我们就能可以

这个结果的最优解了

解释:因为在一串数中,我们想要其删完某个数后其剩下的值最小,我们总想删除大的数

那么剩下的数肯定要小呀 比如 12345 删除5剩下的数是最小的

3.当然我们也可以删除每次发生降序的时候 就把前一个数删除

**/

//100012 2 1

#include<bits/stdc++.h>

using namespace std;

int main(){

string str;

int k,flag = 0;

vectorv;

cin >> str >> k;

for(int i = 0; i < str.size(); i++){

v.push_back(str[i]);

}

while(k–){

int i = 0;

flag = 0;

vector:: iterator t = v.begin();//这里主要是为了调用 v.erase()的库函数删除元素

while(i != v.size()-1){//注意这里的减一 因为下方的v[i+1] 否则会出现段错误

if(v[i] > v[i+1]){//如果出现后一个数小于前一个数那么这就是这一趟的递增的终点

v.erase(t);

flag = 1;

break;

}

i++;

t++;

}

if(flag == 0){//如果是一个递增序列那么的话就要删除最后一个数

v.erase(t);

}

}

int i = 0;

//这么输出是为了防止前置’0’的输出

for(int i = 0; i < v.size(); i++) {

if(v[i] != ‘0’)

break;

}

int j = i;

for( ; j < v.size(); j++){

cout << v[j];

}

}

在这里插入图片描述

四:记录失败码

======================================================================

这是第一次做时写的码,测了好多数据,终于测出错误了,然后就退出算法有问题了但还是想记录一下 下方的测试用例可以拿走不谢

/**

思路:将输入的数据当成字符串处理并进行排序,输出字符串长度-k个字符

*/

#include<bits/stdc++.h>

using namespace std;

int main(){

int n, k;

vectorv,v1,v2,v3;

int count = 0;

cin >> n >> k;;

stringstream st;

st << n;

string str = st.str();

for(int i = 0; i < str.size(); i++){

v.push_back(str[i]);

v2.push_back(str[i]);

}

sort(v.begin(),v.end());

for(int i = 0; i < v.size() - k; i++){

v1.push_back(v[i]);

}

for(int i = 0; i < v2.size(); i++){

for(int j = 0; j < v1.size(); j++){

if(v2[i] == v1[j] && count < v2.size() - k){

v3.push_back(v2[i]);

//cout << v2[i];

v1[j] = ‘a’;//当统计过一次v1容器当中的元素下次就不在输出了99913 2

count++;

break;

}

最后

由于篇幅限制,小编在此截出几张知识讲解的图解

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

y4Vl-1715801605829)]

[外链图片转存中…(img-RUUE0HnT-1715801605830)]

[外链图片转存中…(img-C9i9udPE-1715801605830)]

[外链图片转存中…(img-QMjNdQd0-1715801605830)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值