草庐IT

【蓝桥杯-刷题篇】基础知识运用

热爱编程的小白白 2023-04-12 原文

🍓系列专栏:蓝桥杯

🍉个人主页:个人主页

目录

1.查找两个总和为特定值的索引

2.寻找 3 个数的最大乘积

3.字符统计

4.用杂志拼接信件

5.小蓝吃糖果

6.含 2 天数

7.完全日期

8.星期几

9.图书推荐


1.查找两个总和为特定值的索引

题目链接:查找两个总和为特定值的索引 - 蓝桥云课 (lanqiao.cn)

题目描述

给定一个数组,找到两个总和为特定值的索引。

例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。

若有多组符合情况则输出索引对中小索引最小的一组。

输入描述

第一行为给定数组的长度,不超过 100。

第二行为数组元素,元素大小不超过 100(可能为负数)。

第三行为特定值。

输出描述

输出一行,为两个索引值,升序输出。

输入

6
1 2 3 -2 5 7
7

输出

1 4

方法1:暴力枚举

public class Main {

    public static void main(String[] args) {
    int[] a=new int[110];
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    for(int i=0;i<n;i++) {
        a[i]=sc.nextInt();
    }
    int target=sc.nextInt();
    twoSum(a,target);
    
    }
    
    /**
     * 该方法用于查找两个数,使它们的和等于给定的目标值
     * @param nums 给定的数组
     * @param target 给定的目标值
     */
    public static void twoSum(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    System.out.println(i+" "+j);
                    return ;
                }
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

方法2:HashMap

知识点:【蓝桥杯-筑基篇】HashMap

import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int[] a=new int[110]; //定义一个长度为110的整型数组a
    Scanner sc=new Scanner(System.in); //创建一个Scanner对象
    int n=sc.nextInt(); //读取一个整数n
    HashMap<Integer,Integer> map=new HashMap<>(); //创建一个HashMap对象
    for(int i=0;i<n;i++) { //循环n次
        a[i]=sc.nextInt(); //读取一个整数并存入数组a中
        map.put(a[i], i); //将a[i]和i存入HashMap中
    }
    int target=sc.nextInt(); //读取一个整数target
    for(int j=0;j<n;j++) { //循环n次
        int A=a[j]; //将a[j]赋值给A
        if(map.containsKey(target-A)) { //如果HashMap中包含target-A
            System.out.println(j+" "+map.get(target-A)); //输出j和HashMap中target-A对应的值
            return; //结束程序
        }
    }
    }
}
6
1 2 3 -2 5 7
7
1 4

2.寻找 3 个数的最大乘积

题目链接:寻找 3 个数的最大乘积 - 蓝桥云课 (lanqiao.cn)

 输入

6
5 -2 3 1 -1 4

输出 

60
import java.util.Arrays;
import java.util.Scanner;

/**
 * 实现一个算法在数组中找到 3 个数字的最大乘积。
 * 介绍如下:
 * 例如数组 [5, -2, 3, 1, -1, 4] 中 3 个数字的最大乘积为 60
 *
 */
public class Main {

    /**
     * 可以使用数组接收所需要的计算的所有的数据,然后利用
     * <code>Arrays.sort()</code>函数对数组内容进行排序
     * @param args
     */
    public static void main(String[] args) {
        /*
         * 为了能让所得成绩数量最大,我们应当保证所得数尽量为正数。
         * 并且要让这三个数的绝对值尽可能大。
         * 有如下两种情况能尽量使得所得结果正数,且绝对值最大:
         * (1) 正数*正数*正数
         * (2)负数*负数*正数
         */
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] data = new int[n];
        for (int i = 0; i < n; i++) {
            data[i] = scanner.nextInt();
        }
        Arrays.sort(data);
        int result = Math.max(data[n-1]*data[n-2]*data[n-3], data[n-1]*data[0]*data[1]);
        System.out.println(result);
        
    }

}

3.字符统计

题目:字符统计 - 蓝桥云课 (lanqiao.cn)

 时间限制: 1.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
  给定一个只包含大写字母的字符串 S ,请你输出其中出现次数最多的字母。如果有多个字   母均出现了最多次,按字母表顺序依次输出所有这些字母。

【输入格式】
 一个只包含大写字母的字符串 S .

【输出格式】
 若干个大写字母,代表答案。

【样例输入】
 BABBACAC

【样例输出】
 AB

【评测用例规模与约定】
 对于 100% 的评测用例,1 ≤ |S | ≤ 

 知识点:【蓝桥杯-筑基篇】ArrayList 动态数组

 【蓝桥杯-筑基篇】字符串基础

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    static int[] a=new int[26];
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        for (int i = 0; i < s.length(); i++) {
            a[s.charAt(i)-'A']++;
        }
        int max=0;
        List<Integer> list=new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            if (a[i]>max){
                list.clear();
                max=a[i];
                list.add(i);
            }else if (a[i]==max) list.add(i);
        }
        for (int i:list){
            System.out.print((char)(i+'A'));
        }
    }
}

4.用杂志拼接信件

用杂志拼接信件 - 蓝桥云课 (lanqiao.cn)

题目描述

实现一个算法确定能否由杂志构成信件。介绍如下:

影视剧中信件大多是从报纸或杂志上的字符剪下来拼接而成的。

杂志和信件均由字符串构成,对于给定的杂志和信件,确定信件是否可以由杂志上的字符构成。

例如杂志为 ab,信件为 aa,则不能构成。杂志为 aab,信件为 aa,则可以构成。

输入描述

输入两行字符串,长度均不超过 100。

第一行为杂志字符串,第二行为信件字符串。

输出描述

输出一行,若信件可由杂志构成则输出 YES,否则输出 NO

输入

ab
aa

输出

NO

方法1:HashMap解决

 知识点:【蓝桥杯-筑基篇】HashMap

import java.util.HashMap;
import java.util.Scanner;

// 导入必要的库

public class Main {
 public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     String z=scan.next();
     String x=scan.next();
     HashMap<Character, Integer> mapz=new HashMap<>();
     HashMap<Character, Integer> mapx=new HashMap<>();
     
     // 创建两个哈希表以存储两个输入字符串中每个字符的频率
     for (int i = 0; i < z.length(); i++) {
    	 char c=z.charAt(i);
    	 mapz.put(c, mapz.getOrDefault(c, 0)+1);
	}
     for (int i = 0; i < x.length(); i++) {
    	 char c=x.charAt(i);
    	 mapx.put(c, mapx.getOrDefault(c, 0)+1);
	}
     
     // 检查第一个字符串是否包含第二个字符串中的所有字符
     for (char i = 'a'; i <= 'z'; i++) {
		if(mapz.getOrDefault(i, 0)<mapx.getOrDefault(i, 0)) {
			System.out.println("NO");
			return ;
		}
		
	}
     System.out.println("YES");
     

 }
}

方法2:用数组存,和第三题思路一样


import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;


public class Main {
	static int[] zazhi=new int[26];
	static int[] xinjian=new int[26];
 public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     String z=scan.next();
     String x=scan.next();

     for (int i = 0; i < z.length(); i++) {
    	 char c=z.charAt(i);
    	 zazhi[c-'a']++;
    	
	}
     for (int i = 0; i < x.length(); i++) {
    	 char c=x.charAt(i);
    	 xinjian[c-'a']++;
    	
	}
//     System.out.println(Arrays.toString(zazhi));
//     System.out.println(Arrays.toString(xinjian));
     for (int i = 0; i < zazhi.length; i++) {
		if(zazhi[i]<xinjian[i]) {
			System.out.println("NO");
			return ;
		}
	
	}
     System.out.println("YES");


 }
}

5.小蓝吃糖果

小蓝吃糖果 - 蓝桥云课 (lanqiao.cn)

 输入

3
4 1 1

输出

No

 核心思想:数量最多的糖果数量 小于等于 糖果总数

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt(); // 读入整数个数
        int x = 0; // 当前读入的整数
        long sum = 0; // 所有整数的和
        int max = 0; // 最大的整数

        for (int i = 0; i < n; i++) {
            x = scan.nextInt(); // 读入一个整数
            sum += x; // 累加整数
            max = Math.max(max, x); // 更新最大整数
        }

        if (max * 2 <= sum) { // 判断最大整数是否小于等于所有整数和的一半
            System.out.println("Yes"); // 输出 Yes
        } else {
            System.out.println("No"); // 输出 No
        }
    }
}

6.含 2 天数

含 2 天数 - 蓝桥云课 (lanqiao.cn)

 此方法适用于全部日期类

public class Main {
    // 定义一个长度为13的数组,表示每个月的天数,第0个元素不使用
    static int[] w = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    // 初始化年月日
    static int y = 1900, m = 1, d = 1;

    public static void main(String[] args) {
        int ans = 0;
        // 当年月日不为9999年12月31日时,循环继续
        while (y != 9999 || m != 12 || d != 31) {
            // 如果是闰年,2月有29天,否则有28天
            w[2] = y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 29 : 28;
            // 如果年月日中有数字2,ans加1
            if (check()) ans++;
            d++;
            // 如果日数超过当月天数,日数归1,月数加1
            if (d > w[m]) {
                d = 1;
                m++;
            }
            // 如果月数超过12,月数归1,年数加1
            if (m > 12) {
                m = 1;
                y++;
            }
        }
        // 输出ans+1
        System.out.println(ans + 1);
    }

    public static boolean check() {
        int yy = y, mm = m, dd = d;
        // 判断年月日中是否有数字2
        while (yy > 0) {
            if (yy % 10 == 2) return true;
            yy /= 10;
        }
        while (mm > 0) {
            if (mm % 10 == 2) return true;
            mm /= 10;
        }
        while (dd > 0) {
            if (dd % 10 == 2) return true;
            dd /= 10;
        }
        return false;
    }
}

7.完全日期

完全日期 - 蓝桥云课 (lanqiao.cn)

 与第六题一样,只需根据题意改变check方法中的代码即可


public class Main {
    static int[] w= {0,31,28,31,30,31,30,31,31,30,31,30,31}; // 定义每个月的天数
    static int y=2001,m=1,d=1; // 初始化年月日
    
    public static void main(String[] args) {
        int ans=0; // 计数器
        while(y!=2021||m!=12||d!=31) { // 循环直到日期为2021年12月31日
            if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) w[2] = 29; // 判断是否为闰年
            else w[2] = 28;
            
            if(check()) ans++; // 如果日期符合要求,计数器加一
            d++; // 天数加一
            if(d>w[m]) { // 如果天数超过了这个月的天数
                m++; // 月份加一
                d=1; // 天数重置为1
            }
            if(m>12) { // 如果月份超过了12
                y++; // 年份加一
                m=1; // 月份重置为1
            }
        }
        System.out.println(ans); // 输出计数器的值
    }

    static boolean check() { // 判断日期是否符合要求
        int sum=0; // 定义各位数字之和
        
        int yy=y;
        while(yy>0) { // 计算年份各位数字之和
            sum+=yy%10;
            yy/=10;
        }
        
        int mm=m;
        while(mm>0) { // 计算月份各位数字之和
            sum+=mm%10;
            mm/=10;
        }
        
        int dd=d;
        while(dd>0) { // 计算日期各位数字之和
            sum+=dd%10;
            dd/=10;
        }
        
        int temp=(int)Math.sqrt(sum); // 计算各位数字之和的平方根
        
        return temp*temp==sum; // 判断各位数字之和的平方根的平方是否等于各位数字之和
    }
}

8.星期几

星期几 - 蓝桥云课 (lanqiao.cn)

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

1949 年的国庆节( 10 月 11 日)是星期六。

今年(2012)的国庆节是星期一。

那么,从建国到现在,有几次国庆节正好是星期日呢?

不要求写出具体是哪些年,只要一个数目!

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

  与第六题,第七题 几乎一样,只需根据题意改变check方法中的代码即可

public class Main {
    static int[] w= {0,31,28,31,30,31,30,31,31,30,31,30,31}; // w数组存储每个月的天数
    static int y=1949,m=10,d=1,x=6; // y年,m月,d日,x星期几(1-7)
    
    public static void main(String[] args) {
        int ans=0; // 记录符合条件的日期数
        while(y!=2012||m!=12||d!=31) { // 循环直到日期为2012年12月31日
            if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) w[2] = 29; // 判断是否为闰年
            else w[2] = 28;
            
            if(check()) ans++; // 如果符合条件,ans加1
            d++; // 日期加1
            if(x>=7) {
                x=1; // 如果星期几为7,重置为1
            }
            else x++; // 否则星期几加1
            
            if(d>w[m]) { // 如果日期大于该月天数
                m++; // 月份加1
                d=1; // 日期重置为1
            }
            if(m>12) { // 如果月份大于12
                y++; // 年份加1
                m=1; // 月份重置为1
            }
        }
        System.out.println(ans); // 输出符合条件的日期数
    }

    static boolean check() { // 判断是否为特定日期
        return m==10&&d==1&&x==7; // 如果是返回true,否则返回false
    }
}

9.图书推荐

Git是一款让人一开始觉得很容易学,但却很难精通的工具。本书除了介绍Git的相关知识外,还会模拟各种常见的状况,让读者知道应该在什么时候使用什么指令。
  《Git从入门到精通》共分11个章节,1~3章介绍安装工具及环境,对于已经安装完成的读者可直接从第4章开始阅读。第5章介绍Git基本的使用方式,虽然难度不高,但却是整个Git系统的基础。第6章介绍Git中常用的分支功能以及使用情境,第7~9章则是介绍如何修改现有的历史记录、使用标签,以及如何应对其他常见的状况。
  前面的内容都是在自己的计算机上就可以完成的,从第10章开始介绍如何将自己计算机里的记录推一份到线上(GitHub)。*后一章(第11章)介绍团队开发时可能会使用的开发过程Git Flow。
  市面上的参考书籍或网络教程大多是教大家如何通过终端机指令来学习Git,这让不少想学习Git的新手打了退堂鼓。本书除了教大家如何在终端机视窗中输入Git指令,还搭配了图形界面工具,缓和了读者的学习曲线,让读者更容易上手。

本次送书 2 本 评论区抽2位小伙伴送书
活动时间:截止到 2023-04-08 15:00:00

抽奖方式:利用程序进行抽奖。

参与方式:关注博主、点赞、收藏,评论区评论 "人生苦短,一起加油!"

迫不及待的小伙伴也可以访问下面的链接进行自主购买哦

 京东自营购买链接:

《Git从入门到精通》(高见龙)【摘要 书评 试读】- 京东图书

🍓 获奖名单🍓

 

名单公布时间: 2023-04-08 15:00:00

Sherry的成长之路

热爱编程的小K

  

有关【蓝桥杯-刷题篇】基础知识运用的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  4. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  5. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  6. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  7. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  8. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  9. c++基础-运算符 - 2

    目录1关系运算符2运算符优先级3关系表达式的书写代码实例:下面是面试中可能遇到的问题:1关系运算符C++中有6个关系运算符,用于比较两个值的大小关系,它们分别是:运算符描述==等于!=不等于小于>大于小于等于>=大于等于这些运算符返回一个布尔值,即true或false。例如,当x等于y时,x==y的结果为true,否则结果为false。2运算符优先级在C++中,关系运算符的优先级高于赋值运算符,但低于算术运算符。以下是关系运算符的优先级,从高到低排列:运算符描述>,,>=,关系运算符==,!=相等性运算符&&逻辑与`如果在表达式中有多个运算符,则按照优先级顺序依次进行运算。3关系表达式的书写在

  10. 计算机必读基础书籍 - 2

    一.计算机组成原理    这本书利用组合逻辑、同步时序逻辑电路设计的相关知识,从逻辑门开始逐步构建运算器、存储器、数据通路和控制器,最终集成为完整的CU原型系统,使读者从设计者的角度理解计算机部件构成及运行的基本原理,掌握软硬件协同的概念。    全书共9章,主要内容包括计算机系统概述、数据信息的表示、运算方法与运算器、存储系统、指令系统、中央处理器、指令流水线、总线系统、输入输出系统。1.计算机系统概述1.1计算机发展历程    计算机是一种能够按照事先存储的程序,自动、高速、准确地对相关信息进行处理的电子设备。1946年2月,世界上第一台电子数字计算机ENIAC(ElectronicNum

随机推荐