@@ -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
1631611 . 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
4674571.如何将字符串按照空格分开 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
7457271.完全二叉树,除了叶节点的其他节点必须都有左节点和右节点,并且叶节点没有子节点
@@ -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
8197971.异常处理: 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
8718471.求各个数位之和的方法
@@ -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
103110031.越下界:如 [ 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-
113011001.阶乘公式 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-  # 货物摆放
1212+ # 货物摆放
12451213# 先找到n的所有因数 从1遍历到sqrt(n)即可,因为n//这个数必然也是因数
12461214factor = list ()
12471215n = 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- 
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-  # 小蓝有一个数字矩阵,里面只包含数字 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