Python算法
爱编程的章老师
这个作者很懒,什么都没留下…
展开
-
LeetCode(4)求两个数列的中位数
LeetCode(4)求两个数列的中位数问题给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?提示:nums1.length == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000-106 <= nums1[i], nums原创 2021-02-08 23:26:38 · 385 阅读 · 2 评论 -
LeetCode题解(3)最长子串长度
LeetCode题解(3)最长子串长度题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是原创 2021-02-07 22:02:13 · 739 阅读 · 0 评论 -
LeetCode题解(2)两数相加
LeetCode题解(2)两数相加问题给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。问题分析因为列表的第一原创 2021-02-06 21:12:05 · 221 阅读 · 1 评论 -
python 算法(8) 两数和问题
python 算法(8) 两数和问题问题问题来自leecode:问题描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:原创 2021-02-05 23:31:33 · 253 阅读 · 1 评论 -
python算法(七)堆排序
python算法(六)堆排序堆如上图, 一个堆应该满足所有的子节点都 不大于(不小于)父节点.当子节点不大于父节点的时候,称为大顶堆当子节点不小于父节点的时候,称为小顶堆堆是一个概念上的名词,在实际的程序中,堆是以列表的形式存在的.因此,如上的堆对应的列表是60 40 32 20 35 45 20 15 10 5 21 25 42 43堆排序图示1.首先要将乱序的列表,排列成堆原始列表: 2 4 8 3 6 1排列成堆状图:4 < 6调整成2原创 2021-02-04 22:46:39 · 118 阅读 · 0 评论 -
python算法(六)希尔排序
python算法(六)希尔排序希称排序问题: 将一组乱序的数列,按从小到大(从大到小)的顺序重新排列.方法:设定一个初始增量, 对原始数列进行分组:对每一个分组进行排序设置一个更小的增量对第一轮排序后的数列再按增量重新分组对每一个分组进行排序以此,直到增量为1, 再排序结果为我们想要的结果对分组进行排序用的是插入排序算法.因此,希尔排序是插入排序的一种优化的算法图示代码实现# coding: utf-8# 作者:爱编程的章老师# 创建:2021/2/3 8:07 下午原创 2021-02-03 22:20:47 · 113 阅读 · 0 评论 -
python算法(五)归并排序
python算法(五)归并排序归并排序问题:将一组乱序排列的数列,按从小到大(从大到小)的顺序重新排序.解决问题的逻辑:归并排序的逻辑是:代码实现from random import shuffle"""归并排序"""# 将一列无序的数按从小到大的顺序进行排列def merge_sort(num_lsit1:list,num_list2:list): i = j = 0 result = [] while 1: # 如果第一个列表的元素全部加入结果原创 2021-02-02 21:09:30 · 147 阅读 · 0 评论 -
python算法(四)快速排序
python算法(四)快速排序快速排序目标: 将一组乱序的数列,按从小到大(从大到小)的顺序排列.方法:快速排序的逻辑是:先从这一组数中,随便找一个数作为基准然后对其他的数进行分类,大于基准的分成一组,小于基准的分成一组.然后对分好的两组重新按上面的方法进行分组,直到每一个组只有一个元素,则排序完成示意图:例题数组: 1 5 7 3 2 8 6 9比如,我用7作为基准1<7 加入左侧, 5<7加入左侧, 3<7加入左侧,2<7加入左侧,8<7原创 2021-02-01 20:08:49 · 595 阅读 · 0 评论 -
python算法(三) 插入排序
python算法(3) 插入排序算法分析给出一个乱序的数列,将这个数列按从小大到(从大到小)重新排列插入排序的的逻辑是从选这个数列,一个一个的插入一到一个新的数列中如下:初始数列: 5 1 3 7 9 6 4 2第一个数插入空的数列5第二个数 1 < 5插入5所在的位置新的数列变成:1 5第三个数33>1 往后找3 < 5 插入当前位置 , 新的数列变成1 3 5第四个数77>1 往后7>3往后7>5往后因为5是最后一个数了,所以插原创 2021-01-31 19:34:28 · 298 阅读 · 0 评论 -
python算法(二):选择排序
python 算法(二):选择排序算法分析仍然是排序算法,并且与冒泡排序堪称双生兄弟.逻辑基本一样,唯一不同的时,冒泡排序实行,见一个爱一个的渣男逻辑,而选择排序是一个谋定后而动的狠角.示例:3 2 5 7 1 4 6按从小到大排序从第一个数开始3 记录索引 03 > 2,记录索引 12 < 5 不操作2 < 7 不操作2 >1 记录索引 41 <4 不操作1<6 不操作最终索引记录为4交换第一个数与第五个(索引是4)的两原创 2021-01-30 18:01:27 · 159 阅读 · 0 评论