码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java贪心算法 删数字问题


    问题描述:对给定的n位数字 指定要删除的数字个数 k ,要求删除这k个数之后 ,按照数字原左右顺序 新形成的数字最大

    如输入: 5689   1    表示对于5689 删掉一个数字后    得到最大值       

    应输出 : 689

    贪心算法核心思想就是 :总是做出当前最好的选择    

    那么要删除每一个数时    都从左侧第一个数(最高位)开始比较每两个数字的大小  如果左侧小于右侧  删除左侧数字    这样就保证了最高位上的数字总是一直在变大的   

    比如  21965 这个数  删两位     第一次判断删掉1    第二次判断删除 2    得到结果最优 

    贴出代码 :

    public class 删数字问题 {
    
    
    private static int      k;
    private static int[]data;
    private static intlength;
    
    
    public static void test() {
    for (int i = 0; i < k; i++) {
    boolean isDelete = false; // 判断是否可以覆盖当前数字的标志量
    for (int m = 0; m < length - 1; m++) {
    if ((data[m] < data[m + 1]) && !isDelete) {
    isDelete = true;
    }
    if (isDelete) {
    data[m] = data[m + 1];
    }
    }
    length--; // 不论这个数是不是在遍历的时候是否将isDelete变为true,
          // 循环结束都得将这个长度减1   表示删去了最后的那个数     
    }
    for (int n = 0; n < length; n++) {
    System.out.print("" + data[n]);
    }
    }
    
    
    public static void main(String[] args) {
    data = new int[50];
    Scanner in = new Scanner(System.in);
    String data1 = in.nextLine();
    length = data1.length();
    System.err.println("length = " + length);
    k = in.nextInt();
    String[] data2 = data1.split("");
    for (int j = 0; j < length; j++) {
    data[j] = Integer.parseInt(data2[j]);
    }
    test();
    in.close();
    
    
    }
    }

    输入的是一个String    然后split  分割成String数组      然后 转为int[] 数组     用全局保存

    删除k 个数  就建立一个 for循环,次数为k

    内层循环为了遍历这个数    需要注意的是每次循环结束都需要  删去最后的数字   就是length--  ;

    length是我设置的全局int  表示当前数组的长度   

  • 相关阅读:
    Python数据分析--Numpy常用函数介绍(2)
    mysql获取近7天,7周,7月,7年日期,根据当前时间获取近7天,7周,7月,7年日期
    1016 部分 A+B 【PAT (Basic Level) Practice (中文)】
    微服务迁移、重构最佳经验
    如何用命令行生成RSA的公钥和密钥文件用于Spring Security JWT的项目里
    第十二届钧瓷文化旅游节主题曲:让世界看见钧瓷的魅力
    基于Kubernetes集群构建MongoDB
    Redis分布式锁
    在阿里云和腾讯云的轻量应用服务器上搭建Hadoop集群
    vscode右键菜单栏功能说明
  • 原文地址:https://blog.csdn.net/lengyue815/article/details/128010843
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号