蓝桥杯-算法解题思路+注意事项

文章提供了蓝桥杯竞赛中需要注意的编程细节,如填空题的解答策略,数字翻转的方法,字符串计数的处理,以及各种进制转换。还介绍了算法和数据结构的基础知识,如枚举、排序、字符串算法等,并强调了Java选手的提交规范。此外,文章还给出了二叉树遍历、斐波那契数列和日期处理的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝桥杯注意事项和常错基本知识

  1. 遇到填空题,只需要填写一个数字。像回文数字,用暴力解题法,自己想或者借助计算机用眼睛看出来,写多不得分。

  2. ‘B’ - ‘A’ = 1

  3. 遇到长数字要翻转的,要用/10方法不能用string,因为会溢出。

  4. 遇到字符串计数的,可以用固定分配28个空间的字符数组,分别计算。
    char[] chs = scanner.nextLine().toCharArray();
    counts[chs[i] - ‘A’] += 1;

  5. Arrays.sort(int[] a)
    这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。

  6. Arrays.sort(int[] a, int fromIndex, int toIndex)
    这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序。

  7. 10进制转16进制:System.out.printf(“%X”, n);

  8. 16进制转10进制 :
    String string = scanner.nextLine();
    System.out.print(Long.valueOf(string,16));

    int x=Integer.parseInt(str,16);输入的是不带0x表示的十六进制数,直接转换即可
    int x=Integer.parseInt(str.substring(2),16); 输入的是带有0x标识的十六进制数,需要截去前面两位标识

  9. Math.pow(底数,几次方)

  10. char(int):根据ascii码取得其对应的字符

  11. Integer.toBinaryString(int i):返回int变量的二进制表示的字符串。

  12. toString() : 把对象转成字符串

  13. String str [] = s.nextLine().trim().split(" ");//把输入的字符串去掉首尾的空格后以" "为条件分割成一个String数组。

  14. Date时要注意时区问题,我们是东8区,一开始是1900-01-01 8:00:00所有要减去8个小时的毫秒数

  15. long n = sc.nextLong(); n-=8*3600*1000; Date date = new Date(n); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); System.out.println(format.format(date));

  16. 将ASCII码转为大写字母 int i = ‘A’+1; //66
    char res = (char)i;
    //B

考察内容

计算机算法:
枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论*、概率论*、计算几何*、字符串算法等。
数据结构:
数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树、复杂数据结构*、嵌套数据结构*等

考试时注意

Java 选手请务必不要使用 package 语句,并且确保自己的主类名称为 Main,否则会导
致评测系统运行时找不到主类而得 0 分。
Java 选手如果程序中引用了类库,在提交时必须将 import 语句与程序的
其他部分同时提交。只允许使用 Java 自带的类库。

字符

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

在这里插入图片描述

这里是26为一个循环,可以想象成是26进制的数。
最后检查字符串的顺序是否正确
Character character = (char) (‘A’ + 28 % 26); 答案为C

public String convertToTitle(int columnNumber) {
   
   
        StringBuffer sb = new StringBuffer();
        while (columnNumber != 0) {
   
   
            columnNumber--;
            sb.append((char)(columnNumber % 26 + 'A'));
            columnNumber /= 26;
        }
        return sb.reverse().toString();
    }

另一种简洁的写法

public String convertToTitle(int columnNumber) {
   
   
        return columnNumber == 0 ? "" : convertToTitle(--columnNumber / 26) + (char)('A' + (columnNumber % 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值