![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
KervinChang
这个作者很懒,什么都没留下…
展开
-
Python实现单链表
Python实现单链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接域指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。链接域next用来存放下一个节点的位置(python中的标识)变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class SingleNode(object): """单链表的节点""" def __ini__(s原创 2020-08-12 22:03:16 · 722 阅读 · 0 评论 -
Python实现快速排序
Python3实现快速排序排序原理:首先设定一个分界值,通过该分界值,将数组分为左右两部分;将大于或等于分界值的数据放到数组右边,小于分界值的数据放到数组的左边,此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值;然后,左边和右边的数据都可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧原创 2020-08-12 20:00:26 · 243 阅读 · 0 评论 -
Python实现归并排序
Python3实现归并排序排序原理:将一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。将相邻的两个子组进行合并成一个有序的大组。不断地重复步骤2,直到最终只有一个组为止。代码实现:def merge_sort(merge_list): n = len(merge_list) if n < 2: return merge_list mid = n // 2 left_list = merg原创 2020-08-12 16:04:49 · 232 阅读 · 0 评论 -
Python实现希尔排序
Python3实现希尔排序排序原理:选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;对分好组的每一组数据完成插入排序;减小增长量,最小减为1,重复第二步操作。代码实现:def shell_sort(shell_list): n = len(shell_list) gap = n // 2 while gap > 0: for i in range(gap, n): j = i w原创 2020-08-12 11:25:39 · 367 阅读 · 0 评论 -
Python实现插入排序
Python3实现插入排序排序原理:把所有的元素分为两组,已经排序的和未排序的。找到未排序的组中的第一个元素,向已经排序的组中进行插入。倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。代码实现:def insert_sort(insert_list): # 当前位置从下标为1的元素开始插入 for i in range(1, len(insert_list)): #原创 2020-08-06 22:02:50 · 184 阅读 · 0 评论 -
Python实现选择排序
Python3实现选择排序排序原理:每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后可以找到最小值所在的索引。交换第一个索引处和最小值所在的索引处的值。代码实现:def select_sort(select_list): n = len(select_list) for i in range(n-1): m = i for j i原创 2020-08-06 21:59:58 · 647 阅读 · 0 评论 -
Python实现冒泡排序
Python3实现冒泡排序排序原理:比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。代码实现:def bubble_sort(bubble_list): n = len(bubble_list) # 思路2: # for i in range(n-1): for i in range(n-1, 0, -1): flag = T原创 2020-08-06 21:58:24 · 194 阅读 · 0 评论 -
【LeetCode】跳水板--Python3实现
跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: [3,4,5,6]解释:可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4 。以此类推,得到最终结果。提示:0 < sh原创 2020-07-20 21:32:23 · 284 阅读 · 0 评论 -
【LeetCode】删除排序数组中的重复项--Python3实现
删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度2, 并且原数组nums的前两个元素被修改为1, 2。 你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nu原创 2020-07-20 21:01:02 · 376 阅读 · 0 评论 -
【LeetCode】合并两个有序链表--Python3实现
合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解:# Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self.val = val原创 2020-07-20 20:59:22 · 146 阅读 · 0 评论 -
【LeetCode】有效的括号--Python3实现
有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: true注意:空字符串可被认为是有效字符串。题解:cl原创 2020-06-22 15:57:40 · 168 阅读 · 0 评论 -
【LeetCode】最长公共前缀--Pyhon3实现
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。注意:所有输入只包含小写字母 a-z 。题解:class Solution: def longestCommonPrefix(self, strs: List[str]) -> str原创 2020-06-22 15:01:31 · 93 阅读 · 0 评论 -
【LeetCode】罗马数字转整数--Pyhon3实现
罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V +原创 2020-06-22 14:30:36 · 117 阅读 · 0 评论 -
【LeetCode】回文数--Python3实现
回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为-121。从右向左读,为121-。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读,为01。因此它不是一个回文数。注意:你能不将整数转为字符串来解决这个问题吗?题解:class Solution: def isPalindrome(se原创 2020-06-22 12:37:03 · 176 阅读 · 0 评论 -
【LeetCode】整数反转--Python3实现
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321示例3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题解:class Solution: def reverse(self, x: int) -> int:原创 2020-06-22 12:03:00 · 177 阅读 · 1 评论 -
【LeetCode】两数之和--Python3实现
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:class Solution: def twoSum(self, nums: List[int], target: i原创 2020-06-22 11:41:07 · 101 阅读 · 0 评论