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

这篇具有很好参考价值的文章主要介绍了【蓝桥杯-刷题篇】基础知识运用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍓系列专栏:蓝桥杯

🍉个人主页:个人主页

目录

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文章来源地址https://www.toymoban.com/news/detail-408259.html

  

到了这里,关于【蓝桥杯-刷题篇】基础知识运用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯基础知识5 unique()

    蓝桥杯基础知识5 unique() C++ 在线工具 | 菜鸟工具 (runoob.com) 注意: unique()只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。 可以先对容器元素进行排序sort(),再使用unique(); sort()时间复杂度为O(nlogn),unique()时间复杂度为O(n)。

    2024年01月20日
    浏览(33)
  • 蓝桥杯基础知识3 memset()

    蓝桥杯基础知识3 memset() C++ 在线工具 | 菜鸟工具 (runoob.com) 原码,反码,补码相互转换在线计算器 (23bei.com) 8位的系统中 -1  补码为8个1,即11111111;0的补码是00000000 memset()是一个用于设置内存块值的函数。定义在cstring头文件中。函数声明: void* memset(void*ptr, int value, size_t num); /

    2024年01月16日
    浏览(35)
  • 【leetcode 力扣刷题】链表基础知识 基础操作

    在数据结构的学习过程中,我们知道线性表【一种数据组织、在内存中存储的形式】是线性结构的,其中线性表包括顺序表和链表。数组就是顺序表,其各个元素在内存中是连续存储的。 链表则是由 数据域 和 指针域 组成的 结构体 构成的,数据域是一个节点的数据,指针域

    2024年02月12日
    浏览(39)
  • 数据结构刷题篇 之 【力扣二叉树基础OJ】详细讲解(含每道题链接及递归图解)

    有没有一起拼用银行卡的,取钱的时候我用,存钱的时候你用 难度等级:⭐ 直达链接:相同的树 难度等级:⭐ 直达链接:单值二叉树 难度等级:⭐⭐ 直达链接:对称二叉树 难度等级:⭐⭐⭐ 直达链接:二叉树的前序遍历 难度等级:⭐⭐⭐⭐ 直达链接:另一颗子树 注:

    2024年04月16日
    浏览(79)
  • 【刷题篇】贪心算法(一)

    假设1元、2元、5元、10元、20元、50元、100元的纸币分别由c0,c1,c2,c3,c4,c5,c6张。现在要用这些钱来支付K元,至少要用多少张纸币?

    2024年02月09日
    浏览(45)
  • 【刷题篇】贪心算法

    假设1元、2元、5元、10元、20元、50元、100元的纸币分别由c0,c1,c2,c3,c4,c5,c6张。现在要用这些钱来支付K元,至少要用多少张纸币?

    2024年02月09日
    浏览(37)
  • 【刷题篇】链表(上)

    前段时间我们学习了单向链表和双向链表,本期将带来3道与链表相关的OJ题来巩固对链表的理解。话不多说,让我们进入今天的题目吧! 🚀本期的题目有: 反转单链表 、 链表的中间结点 、 合并两个有序链表 a.题目 b.题解分析(迭代) 🍡 三指针法: 我们可以直接在原链表的

    2024年02月02日
    浏览(55)
  • 【刷题篇】栈和队列

    目录 一.前言🌈 二.有效的括号✨ a.题目 b.题解分析 c.AC代码  三. 用队列实现栈📏 a.题目 b.题解分析(辅助队列法) c.AC代码(辅助队列法) d.题解分析(就地存储法) c.AC代码(就地存储法) 四. 用栈实现队列🍀 a.题目 b.题解分析 c.AC代码         各位小友们好久不见,甚

    2024年02月02日
    浏览(48)
  • 【刷题篇】链表(下)

    各位读者们好,本期我们来填填之前留下的坑,继续来讲解几道和链表相关的OJ题。但和上期单向链表不一样的是,我们今天的题目主要是于环形链表有关,下面让我们一起看看吧。 💻本期的题目有: 环形链表 、 环形链表II 、 求环形链表环长 a.题目 b.题解分析 第一种方法

    2024年01月25日
    浏览(43)
  • 力扣刷题篇之《空白替换》

    ❤️ 铁汁们大家好,欢迎大家来到出小月的博客里,今天小月呢写了一道题目叫替换空格,但是呢,写完之后调试了半天不知道哪里错了,经过小月的坚持不懈,终于成功,来分享给大家小月的错误,希望大家看完我这篇文章都能够“涨芝士”,感觉小月写的还不错的话,记

    2023年04月26日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包