自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 算法进化历程之灯泡开关

出场人物介绍小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序。她做事风风火火,对所有的事情都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨的小丫头。阿福:一个酷爱编程的8年级男生。大家都说他长得像国宝大熊猫,动作缓慢,憨态可掬。他做事情确实够慢的,连说话也慢条斯理,可是他一点也不担心,他常常说:“慢就是快,只要坚持下去,蜗牛也能爬...

2020-04-15 21:37:14 153

原创 算法进化历程之剪刀石头布
原力计划

算法进化历程之剪刀石头布小美:阿福,你玩过剪刀石头布游戏吗?阿福:这算什么问题?谁还能没玩过剪刀石头布?要知道它可是一种世界闻名的猜拳游戏。它起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则(石头打剪刀,布包石头,剪刀剪布),使得剪刀石头布游戏没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得剪刀石头布这个古老的游...

2020-03-27 11:36:42 103

原创 Python算法之旅插入排序的故事
原力计划

插入排序的故事话说计算机世界有一个诚实国,那里的人们不但诚实,而且尊老,每次排队都让年纪大的人排前面。有一次小胖到诚实国去旅游,肚子饿了想吃东西,发现一个烧饼店门前有人排着队,他就跟在队伍后面一起排队。没过多久,又来了一个人,站在小胖后面,并问他:“小伙子,你今年多大?”“26,怎么啦?”“26?那你得排在我后面,我今年38啦。”“为什么?明明是我先来的,先来后到你不懂吗?”“哈哈,先...

2020-03-24 15:07:02 63

原创 Python算法之旅冒泡排序的故事

冒泡排序的故事年关将近,丐帮各分舵派代表前往总舵向帮主进贡。只见帮主门前立了一列梅花桩,各分舵代表立于桩上,等待帮主接见。(梅花桩上的数字代表梅花桩的编号,代表身上的数字代表其布袋数量,布袋数量越多辈分越高)此时各代表所在位置如图示:总管传话,请辈分最高的代表站到最前面(右边)来,其他人依次按辈分大小排队,排队期间禁止喧哗,并不得掉下...

2020-03-21 23:04:32 81

原创 Python算法之旅字符串游戏之拼接字符串

字符串游戏之拼接字符串小美:阿福,最近老师教了我们一种很实用的Python数据结构——字符串,他说Python的字符串操作比其他编程语言都要简明自然呢。阿福:是啊,Python语言的最大特征就是简明易懂,代码和自然语言接近,容易理解。小美:老师给我们举了一个用字符串画五角星方阵的例子,我觉得很好玩,代码也很简洁呢。阿福...

2020-03-12 22:07:03 108

原创 81_搜索旋转排序数组 II

'''81_搜索旋转排序数组 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 ...

2020-02-21 16:42:47 73

原创 154_寻找旋转排序数组中的最小值 II

'''154_寻找旋转排序数组中的最小值 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组...

2020-02-21 16:42:05 91

原创 33_搜索旋转排序数组

'''33_搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5...

2020-02-21 16:41:05 60

原创 153_寻找旋转排序数组中的最小值

'''153_寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0来源:力扣(LeetCo...

2020-02-21 16:39:56 67

原创 Python算法之旅元组的风暴之最长上升子序列

元组的风暴之最长上升子序列小美:还记得我们上次做的那道题目吗?求最长连续递增子序列的长度。阿福:记得啊,当时我们用了两种方法,分别是在a[i] <=a[i-1]和a[i] > a[i-1]时更新max_len,古老师还表扬我们了呢。小美:没错,当时你是出尽了风头啊。但是后来我又学会了一种新的方法,叫做动态规划,效率更高,代码也...

2020-02-21 14:46:20 87

原创 Python算法之旅元组的风暴之最长连续递增序列

元组的风暴之最长连续递增序列小美:前几天老师布置了一道题目:求最长连续递增子序列的长度。我感觉题目并不难,很快就做出来了。老师说我的代码有错误,可我没发现错误啊,我测试了好几组数据都是正确的。阿福:有这种事情?你把代码发给我看看。题目1:求最长连续递增子序列的长度。例如,在元组(1,9,2,5,7,3,4,6,8,0)中最长连续递增子序列为(3,4,6,8),其长度为4。函数功...

2020-02-21 14:43:38 63

原创 Python算法之旅列表的纷争之二进制编码

列表的纷争之二进制编码小美:最近数学老师给我们玩了有趣的猜年龄游戏,他显示了6张表格,你只要观察这6张表格,然后回答“是”与“不是”就可以了。老师可以根据你的回答猜出你的年龄是多少。阿福:真有这么厉害?我也想玩玩看。小美:好的。请看下图的6张表格,然后回答“是”与“不是”。准备好了吗?阿福:准备好了。小美:第1张表格中是否包含了你的年龄?阿福:不是。小美:第2张表格...

2020-02-18 10:50:09 54

原创 桶排序、计数排序和基数排序比较分析

一、桶排序1. 算法思想:桶排序是将待排序序列中处于相同值域的元素存入同一个桶中,即将一个数据表分割成许多桶,然后每个桶中的元素各自排序。它采用分治策略,是一种分布式的排序方法。2. 算法过程:(1)根据待排序序列中最大元素和最小元素的差值和映射规则,确定申请的桶个数;(2)遍历待排序序列,将每一个元素存储到对应的桶中;(3)分别对每一个桶中元素进行排序,并存储到原序列中,获得...

2020-01-19 23:15:52 81

原创 Python算法之旅字典的狂舞之石头剪刀布

字典的狂舞之石头剪刀布小美:阿福,你玩过石头剪刀布游戏吗?阿福:这是什么问题?谁还能没玩过石头剪刀布?要知道它可是一种世界闻名的猜拳游戏。它起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则(石头打剪刀,布包石头,剪刀剪布),使得石头剪刀布游戏没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪刀布这个古老的...

2020-01-14 21:04:53 82

原创 Python算法之旅列表的纷争之回文数列

出场人物介绍:小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序。她做事风风火火,对所有的事情都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨的小丫头。阿福:一个酷爱编程的8年级男生。大家都说他长得像国宝大熊猫,动作缓慢,憨态可掬。他做事情确实够慢的,连说话也慢条斯理,可是他一点也不担心,他常常说:“慢就是快,只要坚持下去,蜗牛也能...

2020-01-04 20:45:54 80

原创 Python算法之旅列表的纷争之双指针扫描 巧若拙

出场人物介绍:小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序。她做事风风火火,对所有的事情都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨的小丫头。阿福:一个酷爱编程的8年级男生。大家都说他长得像国宝大熊猫,动作缓慢,憨态可掬。他做事情确实够慢的,连说话也慢条斯理,可是他一点也不担心,他常常说:“慢就是快,只要坚持下去,蜗牛也能...

2020-01-02 22:54:38 75

原创 Python算法之旅字符串游戏之9路棋盘

阿福:小美,听说你学过海龟绘图,能帮我用turtle来画一张棋谱吗?小美:什么棋谱?阿福:就是一张9路围棋盘的棋谱,它的样子如图1所示:图1知识小贴士:turtle(海龟绘图)很适合用来引导孩子学习编程。最初来自于Wally Feurzig 和 Seymour Papert 于1966 年所创造的 Logo 编程语言。它在绘图区设置了一只想象中的小海龟(画面显示一个箭头...

2019-12-29 21:02:36 94

原创 Python算法之旅字符串游戏之无效的身份证

出场人物介绍小美:小学4年级学生,参加了学校的编程兴趣小组,已经了解了Python语言的基本语法,能够看懂一些简单的程序。她做事风风火火,对所有的事情都很好奇,喜欢打破砂锅问到底,是一个叫人又爱又恨的小丫头。阿福:一个酷爱编程的8年级男生。大家都说他长得像国宝大熊猫,动作缓慢,憨态可掬。他做事情确实够慢的,连说话也慢条斯理,可是他一点也不担心,他常常说:“慢就是快,只要坚持下去,蜗牛也能爬...

2019-12-28 23:34:26 86

原创 Python算法之旅字符串游戏之身份证号的秘密

导语最近在力扣(LeetCode)网闲逛,发现很多题目的官方题解都是用Python语言来描述的,这说明大家已经逐渐认识到Python语言描述算法的优越性:它语法简明,内置函数丰富,表述直截了当,可以用最简明清晰的方式实现算法思想。现在的编程教育起点偏高,难度堪比奥数,令大量孩子望而却步,成了少数算法思维特别强的学生的“专利”。将来高中信息技术要学习Python语言,初中小学也要跟进,全面...

2019-12-28 23:30:18 267

原创 leetcode题解之反转链表

'''反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list...

2019-12-22 23:30:05 34

原创 leetcode题解之反转链表II

'''反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...

2019-12-22 23:28:30 48

原创 leetcode题解之相交链表

'''编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-t...

2019-12-20 22:23:04 33

原创 14_国名接龙游戏

'''FIFA 世界杯对足球爱好者而言是四年一度的盛事。下面我们拿2014 年世界杯参赛国的国名做个词语接龙游戏。不过,这里用的不是中文,而是英文字母(忽略大小写)。假设每个国名只能使用一次,求能连得最长的顺序,以及相应的国名个数。'''# 设置一个保存世界杯参赛国的数组country = ("Brazil", "Croatia", "Mexico", "Cameroon","S...

2019-12-18 16:04:30 141

原创 对分查找应用之列举满足条件的二元组集合

对分查找应用之列举满足条件的二元组集合余姚二中 梁见斌题目:列举满足条件的二元组集合。给定一个长度为n的整数数组a和一个目标值s,判断a中是否存在两个元素 a,b,使得a + b = s?找出所有满足条件且不重复的二元组(a, b)。注意:答案中不可以包含重复的二元组。例如,给定数组 a = (-1, 0, 1, 2, -1, 4, 2, 1, 3), s = 3,则满足要求的二元组集...

2019-12-17 22:36:26 129

原创 leetcode题解之三数之和

'''给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(Leet...

2019-11-29 21:38:38 34

原创 leetcode题解之无重复字符的最长子串

'''给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是...

2019-11-28 20:04:07 45

原创 测时间函数示例

'''测时间函数示例'''import sysimport timedef timer(func, *pargs, **kargs): _reps = kargs.pop('_reps', 1000) start = time.perf_counter() for i in range(_reps): ret = func(*pargs, **k...

2019-11-27 23:33:29 35

原创 自定义zip函数

'''使用了4种方法模拟实现zip(*seqs)的功能'''def myzip(*seqs): seqs = [list(s) for s in seqs] res = [] while all(seqs): res.append(tuple(s.pop(0) for s in seqs)) return res def my...

2019-11-27 22:19:07 35

原创 leetcode题解之两数相加

'''给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> ...

2019-11-20 23:55:23 37

原创 leetcode题解之两数之和

'''给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(L...

2019-11-18 15:41:28 51

原创 丑数序列

'''一个数如果它的质因子只有2、3、5或7,那么我们称这个数为丑数。例如前20个丑数为[1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27]。现要求编程找出第n个丑数。'''def f(n): s = [1] a = b = c = d = 0 while len(s) < n: s.app...

2019-11-16 12:56:08 75

原创 使用移位代替交换操作的几个典型案例分析

使用移位代替交换操作的几个典型案例分析(巧若拙出品,欢迎转载,请注明出处)交换变量值是编程中的基本操作,它通常由3个赋值语句组成。正是因为每次交换操作都需要执行3条赋值语句,效率不算高,所以在有些情况下我们使用移位来代替交换操作,以提高工作效率。例1.插入排序。我们都知道经典的插入排序是采用向后移动元素的方式腾出插入位置,以便将被插入的元素a(i)放到正确的位置上去。事实上也可以用类似...

2019-10-25 11:04:42 139

原创 Python基础算法学习讲义之冒泡排序算法

冒泡排序算法基础冒泡排序例题1.使用冒泡排序算法对列表a升序排序。函数名:bubble_sort(a)参数表:a -- 待排序列表。返回值:该方法没有返回值,但是会对列表的对象进行升序排序。算法思想:外层循环累计排序轮数,同时控制待排序数组的右边界,即a[0..i]为待排序部分;内层循环扫描a[0..i-1],比较相邻元素,并通过交换元素值的方式将最大值冒泡到最右端def ...

2019-10-22 22:37:39 69

原创 Python基础算法学习讲义之选择排序算法

选择排序算法经典选择排序例题1.使用选择排序算法对列表a升序排序。函数名:selection_sort(a)参数表:a -- 待排序列表。返回值:该方法没有返回值,但是会对列表的对象进行升序排序。算法思想:外层循环控制待排序数组的左边界,即a[i:]为待排序部分;内层循环扫描a[i+1:],找到最小元素的下标def selection_sort(a): for i...

2019-10-22 22:36:36 52

原创 找出较轻的那个球

'''@Description: In User Settings Edit@Author: your name@Date: 2019-08-14 10:59:05@LastEditTime: 2019-08-14 16:47:34@LastEditors: Please set LastEditors给定n个球,其中只有1个球比其他球轻,请问至少比较多少次,可以找出该轻球...

2019-08-14 16:50:48 109

原创 如何更好地理解希尔排序算法

如何更好地理解希尔排序算法巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo)希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n ^2)的第一批算法之一。为什么希尔排序算法的效率会比简单插入排序高?如何理...

2019-08-08 09:59:00 97

原创 装球问题算法集锦

# -*- coding: utf-8 -*-"""Created on Thu Apr 4 09:19:06 2019@author: Administrator把m个同样的小球放在n个同样的盒子里,允许有的盒子空着不放,问共有多少种不同的分法?其中5,1,1和1,5,1 是同一种分法。算法分析:回溯算法:有2种思路,一种是确保后面的盒子中球不比前面的少,另一种是确保后面的...

2019-04-28 10:44:59 227

原创 两项竞赛总分

# -*- coding: utf-8 -*-"""Created on Wed Mar 27 19:42:56 2019@author: 巧若拙某学校使用“两项竞赛”对各班级的日常表现进行评比,规则如下:记录各个班级的纪律和卫生得分,根据得分分别计算纪律和卫生名次(得分越高排名越前,得分相同,名次也相同);再根据两项竞赛的名次计算总分(总分=纪律名次+卫生名次);最后计算总分的...

2019-03-27 23:28:32 213

原创 同余定理定理的两种解法

"""Created on Mon Feb 25 15:51:30 2019@author: Administrator先介绍两个公式:1.(A * B) mod k = (A mod K) * (B mod K) mod K;2.对于任何一个自然数p,若P为奇数有p=(p\2)*2+ 1,若P为偶数,则p=(p\2)*2+0以p=19为例,B^19=B^(2*9+1)=B * B^9...

2019-02-25 17:17:39 835

原创 求解四宫数独

#!/usr/bin/python3#文件:求解四宫数独#作者:巧若拙#日期:2019年2月19日'''四宫数独规则:在4x4的格子中,根据已知数字,推理出所有剩余空格的数字,并满足每一行,每列,每一个宫内均含1到4的数字并且不重复,每道数独有且仅有唯一答案。'''def four_palace_sudoku(a, n):    def answer(r, c):       ...

2019-02-19 17:34:51 1203 1

提示
确定要删除当前文章?
取消 删除