[每日两题系列]刷算法题咯~~

2023-11-15

今日题目

        本系列所选题目均来自力扣或者牛客网站. 所选题目主要是以其中的简单题为主, 中等题为辅, 包含少数困难题(原因是: 本人目前能力还不够~ ). 开展这个系列的目的是督促自己, 在暑假的时间里也要保持有一定的刷题量, 拒绝摆烂~
        话不多说, 直接开刷~~ 今日题目选自蓝桥杯中的两道题.

卡片

        题目描述:
在这里插入图片描述

解题思路:
        (1) 这道题我们可以使用哈希的思想, 将每个数字一共有多少张卡片给记录下来. 接下来每当出现一个数字, 就将这个数字对应卡片的数量减1.
        (2) 从1开始拼, 所以我们可以先把要累加的值设为1, 接下来就分为两种思路: 一是对这个需要判断每一位的数字, 每次进行%10来拆分这个数字; 二是将这个数字转成一共字符串, 再将这个字符串拆分成一个字符数组, 然后遍历这个字符数组即可. 本人建议使用第二种方法, 好想也好写. char[] str = String.valueOf(number).toCharArray()

实现代码:

public class Main {
    public static void main(String[] args) {
        int[] numbers = new int[10];
        for(int i = 0; i < 10; i++){
            numbers[i] = 2021;
        }
        int number = 1;
        boolean flag = true;
        while(flag){
            //将整数先转字符串后再转字符数组
            char[] str = String.valueOf(number).toCharArray();
            for(int i = 0; i < str.length; i++){
                if(numbers[str[i]-'0'] > 0){
                    numbers[str[i]-'0']--;
                }else{
                    flag = false;
                    break;
                }
            }
            if(flag){
                number++;
            }
        }
        System.out.println(number-1);
    }
}

直线

        题目描述:
在这里插入图片描述

解题思路:
        (1) 这道题属于是数学题了, 写起来会比较复杂.
        (2) 我们可以先使用一个集合(这里用顺序表)来将平面 20X21 个整点给存储起来. 其中集合中的每个元素都是Map类型, 用来存储点的坐标(这样不会出现重复点的情况).
        (3) 接下来进行计算斜率k和系数b, 在此之前, 需要先从集合中获取两个点, 然后将这两个点计算出来的k和b通过Map存储到Set当中, 当出现与Set中相同的值的时候, 就不会进行存储.
        (4) 需要注意的是, 在(3)中我们是不考虑水平和垂直的直线, 因为在平面中是会包含很多两点连成同一条水平或垂直的直线, 将这些情况抛出出去最后再直接加上可以提高效率.

实现代码:

public class Main {
    public static void main(String[] args) {
        //存储所有的k和b
        Set<Map<Double, Double>> lines = new HashSet<>();

        //存储所有点的集合
        List<Map<Integer, Integer>> points=new ArrayList<>();
        for(int i = 0; i < 20; i++){
            for(int j = 0; j < 21; j++){
                Map<Integer, Integer> temp = new HashMap<>();
                temp.put(i, j);
                points.add(temp);
            }
        }

        //计算斜率
        for(int i = 0; i < points.size(); i++){
            for(int j = i + 1; j < points.size(); j++){
                //先获取两点的坐标
                double x1 = 0;
                double y1 = 0;
                double x2 = 0;
                double y2 = 0;
                for(Map.Entry<Integer, Integer> entry : points.get(i).entrySet()){
                    x1 = entry.getKey();
                    y1 = entry.getValue();
                }
                for(Map.Entry<Integer, Integer> entry : points.get(j).entrySet()){
                    x2 = entry.getKey();
                    y2 = entry.getValue();
                }
                //先不考虑水平或者垂直的直线
                if(x1 == x2 || y1 == y2){
                    continue;
                }
                //开始计算斜率
                double k = (y2 - y1)/(x2 - x1);
                double b = (x2*y1 - x1*y2)/(x2 - x1);
                Map<Double, Double> temp = new HashMap<>();
                temp.put(k, b);
                lines.add(temp);
            }
        }

        System.out.println(lines.size() + 20 + 21);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[每日两题系列]刷算法题咯~~ 的相关文章

随机推荐

  • 搭建Ambari Hadoop系统实验

    1 基础环境准备 1 登录到实训系统 检查实训环境 确保有一个CentOS 7系统的虚拟机用来搭建ambari集群 非桌面版虚拟机 首先修改主机名 点击实训页面 虚拟机信息 标签进入非桌面版虚拟机 在 后输入hostnamectl set
  • windows重启nginx服务

    在nginx安装目录下 安全有序停止 nginx exe s quit 启动 start nginx
  • 考研OR工作----计算机操作系统简答题及疑难知识点总结(第三章 处理机调度与死锁)

    上一篇文章总结了一些关于进程的知识点 这章的目的也是根据 计算机操作系统 第四版 汤子瀛 的书来总结一下进程调度和死锁的相关知识点 这一章其实和上一章紧密相连 所以如果没有基础或基础较差 对一些概念还有些模糊 的朋友们先去看上一章的简答题总
  • linux常见面试题

    1 连接linux服务器工具有哪些 SecureCRSecureFX 最好 RealVNC SSHClient putty 比较 SecureCRSecureFX 可以文件传输 可使用命令行 设置字符编码 可开启多个 SSH Client
  • Java拾遗

    这里写自定义目录标题 Hibernate Error Unable to locate persister Caused by java lang NoClassDefFoundError javax sql rowset serial S
  • Nginx超时配置、限流

    目录 一 说明 二 超时配置 三 限流 限制访问频率 限制并发连接数 四 问题记录 五 参考文章 Author Jinwei EditTimes 2020年11月25日17 31 06 一 说明 Nginx 处理的每个请求均有相应的超时设置
  • spring注解及扩展

    1 spring配置注解 spring建议通过注解配置 替代原xml配置方式 使用配置类替代xml配置的优势大体 1 xml配置维护容易出错而且不易检查 java配置类基于java语法检查 对于java程序员更友好 易于维护 2 注解配置
  • NISEDIT如何发布,Qt如何发布文章?难道还有人不会(超详细教学,跟着走,不会你怪我)

    一 自动发布 直接运行即可 不过多阐述 二 手动发布 文件清单 ExamSys exe account txt exam txt Qt5Core dll Qt5Gui dll Qt5Widgets dll libstdc 6 dll lib
  • LeetCode中函数题中“多出来的参数“---returnsize

    转载 关于returnSize 第一次在leetcode上瞎逛就遇到了就遇到了它 int twoSum int nums int numsSize int target int returnSize 1 这个代码的实现并不是什么难解的方法
  • JVM 由哪些部分组成?

    JVM 由哪些部分组成 解析 这是对 JVM 体系结构的考察 答 JVM 的结构基本上由 4 部分组成 类加载器 在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎 执行引擎的任务是负责执行 class 文件中
  • Zynq7000硬件开发之芯片供电电源功耗(电流)评估

    案头语 单板硬件的主控芯片集成度越来越高 多核处理器越来越多 一块单板可能只需要1块芯片就能满足整体需求 一方面减少设计复杂度 另一面节省PCB面积成本 能同时掌握硬件原理设计以及PCB Layout设计逐渐成为主流 本系列文章同时包含有两
  • ES6详解 快速上手!

    一 Es6 1 1 ES6的概述 ECMAScript的快速发展 编程语言JavaScript是ECMAScript的实现和扩展 ECMAScript是由ECMA 一个类似W3C的标准组织 参与进行标准化的语法规范 ECMAScript定义
  • 【python量化】用python搭建一个股票舆情分析系统

    写在前面 下面的这篇文章将手把手教大家搭建一个简单的股票舆情分析系统 其中将先通过金融界网站爬取指定股票在一段时间的新闻 然后通过百度情感分析接口 用于评估指定股票的正面和反面新闻的占比 以此确定该股票是处于利好还是利空的状态 1 环境准备
  • C++(Liunx) 使用cut截 取出Ubuntu用户的家目录,要求:不能使用“:“作为分割.

    使用cut截 取出Ubuntu用户的家目录 要求 不能使用 作为分割
  • 43.MQ—RabbitMQ

    目录 一 MQ RabbitMQ 1 同步调用与异步调用 1 1 同步调用 1 2 异步调用 2 MQ之间的区别 3 RabbitMQ学习 3 1 docker下载rabbitmq容器 并启动 3 2 RabbitMQ中的几个概念 3 3
  • Python遥感开发之分段读取和保存遥感数据

    Python遥感开发之分段读取和保存遥感数据 1 分段读取数据 2 实现分批读取数据以及进行计算 3 实现分批保存成TIF文件 所有完整代码 4 分段TIF整合到一个TIF 5 生成一个空白TIF 每个像元值为0的TIF 前言 当遇到批量读
  • Supervisord进程管理工具的安装使用

    先来介绍 supervisord Supervisor 是一个进程监控程序 满足的需求是 我现在有一个进程需要每时每刻不断的跑 但是这个进程又有可能由于各种原因有可能中断 当进程中断的时候我希望能自动重新启动它 此时 我就需要使用到了 Su
  • dataloader的使用

    dataloader 构建可迭代的数据装载器 我们在训练的时候 每一个for循环 每一次iteration 就是从DataLoader中获取一个batch size大小的数据的 dataloader官网 torch utils data P
  • 【MySQL基础】常用函数

    文章目录 单行函数 字符函数 LENGTH CONCAT UPPER LOWER SUBSTR SUBSTRING INSTR TRIM LPAD RPAD REPLACE 数学函数 ABS ROUND CEIL FLOOR TRUNCAT
  • [每日两题系列]刷算法题咯~~

    今日题目 卡片 直线 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒绝摆烂 话不多说 直