Skip to content

Commit 1b93576

Browse files
committed
update 蓝桥杯复习
1 parent b191621 commit 1b93576

File tree

1 file changed

+3
-39
lines changed

1 file changed

+3
-39
lines changed

面试和算法/蓝桥杯/蓝桥杯复习.md

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,6 @@ print(final_good_rate)
156156

157157
### 5.回文日期
158158

159-
<img src="https://img-blog.csdnimg.cn/5b53dfc12a634f6bb92cf4f19cccd7ab.png" style="zoom:60%;" />
160-
161159
注意日期模块datetime的使用 比较重要的就是:
162160

163161
1. datetime.datetime(year= ,month= ,day= ) 返回的是datetime的类对象
@@ -254,8 +252,6 @@ print(distance)
254252

255253
### 6.去重与排序
256254

257-
<img src="https://img-blog.csdnimg.cn/829919110de24d9cbbba10584c35fde2.png" style="zoom:60%;" />
258-
259255
去重: 利用列表的index()函数,找到返回下标,找不到返回ValueError错误来进行处理
260256

261257
排序: 列表自带的sort()函数
@@ -287,8 +283,6 @@ print(end='\n')
287283

288284
### 7.自然数统计排序
289285

290-
<img src="https://img-blog.csdnimg.cn/f525258c02a144ecad9b44ce3771675a.png" style="zoom:67%;" />
291-
292286
这个题重点在于对字典要按照key值进行排序,与列表list不同的是,list有自带的sort函数,而相对字典排序可以选用Python内置的sorted函数
293287

294288
对字典而言sorted函数默认是按照key值进行排序
@@ -363,8 +357,6 @@ sorted(iterable, key=None, reverse=False)
363357

364358
### 8.最小字典序 贪心基础算法
365359

366-
<img src="https://img-blog.csdnimg.cn/76d65aed11094412a707135edbd5ffb9.png" style="zoom:67%;" />
367-
368360
每删除一个单词都保证得到的字符串字典序都最小,那么最终得到的字符串字典序一定最小!!!这就是贪心算法
369361

370362
```python
@@ -460,8 +452,6 @@ for i in range(n):
460452

461453
### 1.字符串处理
462454

463-
<img src="https://img-blog.csdnimg.cn/12a9ff3c02554fc0873ffd7330e3ec34.png" style="zoom: 67%;" />
464-
465455
思路:
466456

467457
1.如何将字符串按照空格分开 split()函数,如果有多个空格按照空格分开会发生什么情况?(通过调试来确定)
@@ -542,8 +532,6 @@ print(new_str)
542532

543533
这个题目用了三个循环,但是他的数据量是10^5的量级,很大,很容易超时,后续优化。
544534

545-
<img src="https://img-blog.csdnimg.cn/0174777728f244e3817d074ff0cf6e05.png" style="zoom:67%;" />
546-
547535
```python
548536
#题目要求的非空子串应该是可以重复的
549537
#求一个字符串其中恰好出现一次的字符个数
@@ -619,8 +607,6 @@ print(num - 1)
619607

620608
### 4.等差数列求和
621609

622-
<img src="https://img-blog.csdnimg.cn/3a2e59bc213940ae83dc37f4792de42f.png" style="zoom:67%;" />
623-
624610
解题思路:先将输入的数据进行排序得到部分等差数列,再利用等差数列的公式 an = a1 + (n-1) * d,现在已知部分数列的项数,即知道数列长度的下限,所以可以知道公差上限,计算出公差上限之后再从上往下遍历查找,看该公差值是否可以让数列的数字满足等差数列的条件,如果可以则得到符合条件的最大公差值,根据该公差值可以得到最短长度的等差数列。
625611

626612
公差的计算公式如下,除法的结果可能为小数,所以需要整除(向下取整),再循环
@@ -684,8 +670,6 @@ else:
684670

685671
### 5.相乘(转化思维)
686672

687-
<img src="https://img-blog.csdnimg.cn/755c4c79116e49f681ec7c7561e168b3.png" style="zoom: 80%;" />
688-
689673
常规思路:从1到1000000007之间进行遍历,这样不仅循环次数多,数据计算量还大,很容易超时
690674

691675
转变思路:看一下需要用到的计算公式
@@ -738,8 +722,6 @@ else:
738722

739723
### 6.完全二叉树的权值(Debugging)
740724

741-
<img src="https://img-blog.csdnimg.cn/83227afbae2649ebb874fb026cf32870.png" style="zoom:67%;" />
742-
743725
这题和完全二叉树基本没什么关系,只是可以顺带复习一下完全二叉树的性质:
744726

745727
1.完全二叉树,除了叶节点的其他节点必须都有左节点和右节点,并且叶节点没有子节点
@@ -791,8 +773,6 @@ print(ans)
791773

792774
### 7.求和(转化思维)
793775

794-
<img src="https://img-blog.csdnimg.cn/2961c4823b6449698efc1c25ebcc9686.png" style="zoom:67%;" />
795-
796776
优化思路:最暴力的做法就是一个一个遍历的做,这样时间复杂度是O(n^2)很大,观察发现每次最花时间的就是求ak+1到an的和,而且每一次进入下一个循环都会减去ak,所以没必要每一次都重新相加,将所有之和存到一个变量里面,每一次循环减去一个数就是所求的和了,这样的时间复杂度是O(n),不会超时
797777

798778
```python
@@ -812,8 +792,6 @@ print(sum)
812792

813793
### 8.修改数组(超时了 还在优化)
814794

815-
<img src="https://img-blog.csdnimg.cn/2651fbd52b1748b888a59e056e7f203f.png" style="zoom:67%;" />
816-
817795
判断元素在不在列表中的两种方法: num_list 中是否含 num 元素
818796

819797
1.异常处理: try except else语句
@@ -864,8 +842,6 @@ print(end='\n')
864842

865843
### 1.数位排序
866844

867-
<img src="https://img-blog.csdnimg.cn/f4c27ead0e624afba25562c78f4d57ef.png" style="zoom:67%;" />
868-
869845
注意两点:
870846

871847
1.求各个数位之和的方法
@@ -948,8 +924,6 @@ print(day-1)
948924

949925
### 3.谈判
950926

951-
<img src="https://img-blog.csdnimg.cn/f200cf187cd94af494d714591333b600.png" style="zoom:67%;" />
952-
953927
贪心:每一次都找人数最少的两个进行谈判,这样的金币最少
954928

955929
注意:新建一个与原列表相同的列表不能直接赋值
@@ -1024,8 +998,6 @@ print(date.minute)
1024998

1025999
### 5.图形模糊
10261000

1027-
<img src="https://img-blog.csdnimg.cn/8c5d0b9a8d304493b2821690fe78b1da.png" style="zoom:67%;" />
1028-
10291001
要点:3*3为中心的所有像素进行处理,如何判断周围的值是否在列表内???(越下界和上界是不一样的)
10301002

10311003
1.越下界:如 [0] [-1],由于list[-1]表示最后一个元素,那么这个时候不会出现IndexError报错,需要通过判断下标是否为负来进行处理
@@ -1125,8 +1097,6 @@ print(ans)
11251097

11261098
### 1.杨辉三角的数学总结
11271099

1128-
<img src="https://img-blog.csdnimg.cn/f34ba898dc554034969a4b675e2ec09d.png" style="zoom:67%;" />
1129-
11301100
1.阶乘公式 factorial()
11311101

11321102
```python
@@ -1236,12 +1206,10 @@ def is_prime(num):
12361206

12371207
例题:货物摆放
12381208

1239-
<img src="https://img-blog.csdnimg.cn/2123abfa03234adfb9e5e02006de9864.png" style="zoom:67%;" />
1240-
12411209
和上面的思路相同,只需要遍历到平方根的位置,因为前面找到了后面就必然会有匹配项。
12421210

12431211
```python
1244-
![3](D:\Code\蓝桥杯\备战\3.13\3.png)# 货物摆放
1212+
# 货物摆放
12451213
# 先找到n的所有因数 从1遍历到sqrt(n)即可,因为n//这个数必然也是因数
12461214
factor = list()
12471215
n = int(input())
@@ -1267,8 +1235,6 @@ print(count)
12671235

12681236
### 3.寻找2020(需要读取文档中的内容)
12691237

1270-
<img src="https://img-blog.csdnimg.cn/c645e2db34cd4978a78ea38a0e0e6303.png" style="zoom:67%;" />
1271-
12721238
思路很简单,关键是读取文件中的数据
12731239

12741240
```python
@@ -1278,7 +1244,7 @@ with open(file="",mode='r',encoding='utf-8') as fs:
12781244

12791245
这样读取的数据如下:
12801246

1281-
![image-20230314131509944](C:\Users\XiaoLuBan\AppData\Roaming\Typora\typora-user-images\image-20230314131509944.png)
1247+
![image-20230314131509944](https://image.davidingplus.cn/images/2025/02/02/image-20230314131509944.png)
12821248

12831249
可以看到里面每一行读完会有个 '\n' 符号,而最后一行没有,这样就很烦,所以需要用另外一种方法来读取
12841250

@@ -1290,7 +1256,7 @@ with open(file="",mode='r',encoding='utf-8') as fs:
12901256
总代码:
12911257

12921258
```python
1293-
![4](D:\Code\蓝桥杯\备战\3.13\4.png)# 小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找到这个数字矩阵中有多少个 2020 。 小蓝只关注三种构成 2020 的方式:
1259+
# 小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找到这个数字矩阵中有多少个 2020 。 小蓝只关注三种构成 2020 的方式:
12941260
# • 同一行里面连续四个字符从左到右构成 2020。
12951261
# • 同一列里面连续四个字符从上到下构成 2020。
12961262
# • 在一条从左上到右下的斜线上连续四个字符,从左上到右下构成 2020。
@@ -1350,8 +1316,6 @@ print(ans)
13501316

13511317
### 4.平面切分
13521318

1353-
<img src="https://img-blog.csdnimg.cn/f3c943d2e09e43908681c5a664941458.png" style="zoom:67%;" />
1354-
13551319
主要是要弄清楚平面切分是怎么形成的,这个问题可以用动态规划的思想来处理,我们从第一个开始一条一条添加直线进入,每天添加一条直线查看会有多少新的平面被切分出来,寻找新加入的直线与已有直线的关系(这里就是相交关系)和新被切分出的平面的数学关系,
13561320

13571321
规律如下:

0 commit comments

Comments
 (0)