数据结构与算法学习
文章平均质量分 68
以初学者的心态汲取营养
Wupke
以慕灵阁之名践行:心怀初学者的姿态,Stay hungry, Stay foolish!
展开
-
【求二叉树的最长路径】
自定义二叉树,并求出二叉树的最长路径思路:求出二叉树的深度depth,再遍历一遍二叉树,找到并记录长度为depth的路径即可。## time:2022年4月23日23:12:21# author:Wupke# description: 求二叉树的最长路径,思路:求出二叉树的深度depth,再遍历一遍二叉树,找到并记录长度为depth的路径即可。class TreeNode: # 定义二叉树 def __init__(self, val=0, left=None, right=No.原创 2022-04-23 23:26:51 · 1336 阅读 · 0 评论 -
【数据结构与算法-动态规划系列经典例题汇总】
【数据结构与算法-动态规划系列经典例题汇总】典例1、爬楼梯(easy)典例2、打劫(easy)典例3、最大字段和(easy)典例4、找零钱(medium)典例5、三角形(medium)典例6、最长上升子序列(medium)典例7、最小路径和(medium)典例8、地下城游戏(hard)典例1、爬楼梯(easy)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现:可本地运行测试的完整代码:典例2、打劫(easy)题目描述:思路:原创 2022-03-23 00:01:30 · 10174 阅读 · 1 评论 -
【数据结构与算法-搜索(BFS、DFS)系列典例题汇总】
【数据结构与算法-搜索(BFS、DFS)系列典例题汇总】典例1、岛屿数量(medium)典例2、词语阶梯(medium)典例3、词语阶梯2(hard)典例4、火柴棍摆正方形(medium)典例5、收集雨水(hard)典例1、岛屿数量(medium)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现:可本地运行测试的完整代码:典例2、词语阶梯(medium)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现原创 2022-03-21 00:56:57 · 1362 阅读 · 0 评论 -
【数据结构与算法-哈希表与字符串经典例题汇总】
数据结构与算法-哈希表与字符串经典例题汇总原创 2022-03-17 01:20:44 · 1315 阅读 · 0 评论 -
【数据结构与算法-二分搜索与二叉查找(排序)树相关经典例题汇总】
【数据结构与算法-二分搜索与二叉查找(排序)树相关经典例题汇总】基础知识典例1、插入位置(easy)典例2、区间查找(medium)典例3、旋转数组查找(medium)典例4、二叉查找树编码与解码(medium)典例5、逆序数(hard)基础知识二分查找问题偏向于分治-可用循环的方法问题涉及回溯概念-可用递归的方法典例1、插入位置(easy)题目描述:35思路:LeetCode提交OJ测试链接:OJ测试代码实现:class Solution {pub原创 2022-03-11 16:30:45 · 218 阅读 · 0 评论 -
【数据结构与算法-二叉树与图经典例题汇总】
【数据结构与算法-栈、队列、堆经典例题汇总】典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)典例1、链表逆序-a(easy)题目描述:思路:LeetCode提交OJ测试链接:OJ测试代码实现:可本地运行测试的完整代码:典例1、链表逆序-a(easy)题目描述:思路:LeetCode提交OJ测试链接:原创 2022-03-10 09:13:55 · 1038 阅读 · 0 评论 -
【数据结构与算法-递归、回溯、分治策略面试经典例题汇总】
【数据结构与算法-经典例题汇总】典例1、链表逆序-a(easy)典例2、链表逆序-a(easy)典例3、链表逆序-a(easy)典例4、链表逆序-a(easy)典例5、链表逆序-a(easy)典例6、链表逆序-a(easy)典例1、链表逆序-a(easy)【数据结构与算法-经典例题汇总】典例1、链表逆序-a(easy)典例2、链表逆序-a(easy)典例3、链表逆序-a(easy)典例4、链表逆序-a(easy)典例5、链表逆序-a(easy)典例6、链表逆序-a(easy)典例1、链表逆序-a(easy原创 2022-03-08 16:40:11 · 1344 阅读 · 0 评论 -
【数据结构与算法-贪心算法经典例题汇总】
【数据结构与算法-栈、队列、堆经典例题汇总】典例1、分发糖果/分发饼干(easy)典例2、摇摆序列(medium)典例3、移除K个数字(medium)典例4、跳跃游戏-a(medium)典例5、跳跃游戏2(hard)典例6、用最少数量的箭射击气球(medium)典例7、最优加油策略(hard)基础搭建:从钞票找零与最佳的实际情况中理解贪心算法的思想:尽可能的使用较大的面值的钞票支付,需要的钱张数最少!贪心算法的设计思想:即是遵从某种规律,不断的贪心的选择当前情况下最优策略的算法实现方法。示例:原创 2022-03-04 22:22:46 · 2273 阅读 · 1 评论 -
【数据结构与算法-栈、队列、堆经典例题汇总】
【数据结构与算法-栈、队列、堆经典例题汇总】典例1、使用队列实现栈(easy)典例2、使用栈实现队列(easy)典例3、包含min函数的栈(easy)典例4、合法的出栈顺序(medium)典例5、简单的计算器(hard)典例6、数组中第K大的数(medium)典例7、寻找中位数(hard)典例1、使用队列实现栈(easy)题目描述:预备知识栈:先进后出基本操作:队列:先进先出思路:在元素入栈时候,利用临时队列调换元素的顺序 。使得 存入队列的元素顺序与栈的顺序原创 2022-03-03 17:26:30 · 1558 阅读 · 0 评论 -
【数据结构与算法-链表经典例题汇总】
【数据结构与算法-链表经典例题汇总】典例1、链表逆序-a(easy)典例1、链表逆序-b(medium)典例2、求两个链表的交点-(easy)典例3、链表求环 - (medium)典例4、链表划分- (medium)典例5、复杂链表的深度拷贝 - (hard)典例6、排序链表的合并a-两个(easy)典例6、排序链表的合并b-多个(hard)典例1、链表逆序-a(easy)题目描述:思路:依次遍历链表的节点,每遍历一个节点就逆置一个节点 。LeetCode提交OJ测试链接:OJ原创 2022-03-01 16:13:59 · 1918 阅读 · 2 评论 -
【力扣—剑指 Offer(第 2 版)简单题目解析汇总】
【力扣—剑指 Offer(第 2 版)简单题目解析汇总】说明1、基本字符串数组数组 - 排序矩阵/模拟枚举2、算法动态规划深度优先搜索广度优先搜索递归分治记忆化搜索快速选择二分查找3、基础数据结构树(二叉树)二叉搜索树栈队列堆(优先队列)哈希表链表4、技巧性题目双指针位运算计数设计说明简单题目共计38道,按照标签分类为:基本、算法、基础数据结构、技巧等,具体如下。1、基本字符串剑指 Offer 05. 替换空格.剑指 Offer 50. 第一个只出现一次的字符.剑指offer–5原创 2022-02-27 03:23:54 · 951 阅读 · 0 评论 -
【python & 快速排序算法】
【python & 快速排序算法】算法基本原理思想排序代码示例复杂度分析算法基本原理思想快速排序的思路是依据一个“中值”数据项来把数据表分为两半:小于中值的一半和大于中值的一半,然后每部分分别进行快速排序(递归)如果希望这两半拥有相等数量的数据项,则应该找到数据表的“中位数”**,但找中位数需要计算开销!要想没有开销,只能随意找一个数来充当“中值”,比如,第1个数。快速排序的递归算法“递归三要素”如下:基本结束条件:数据表仅有1个数据项,自然是排好序的缩小规模:根据“原创 2021-10-22 12:33:38 · 145 阅读 · 0 评论 -
【python & 归并排序算法】
【python & 归并排序算法】算法基本原理思想简单排序代码示例python 化的代码版本:复杂度分析算法基本原理思想归并排序体现分而治之的分治策略-归并排序是递归算法,思路是将数据表持续分裂为两半,对两半分别进行归并排序递归的基本结束条件是:数据表仅有1个数据项,自然是排好序的;缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一;调用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并,得到排好序的数据表算法流程示意图:简单排序代码示例原创 2021-10-22 11:06:45 · 269 阅读 · 0 评论 -
【python & 谢尔排序算法】
【python & 谢尔排序算法】算法基本原理思想简单排序代码示例算法分析算法基本原理思想注意到插入排序的比对次数,在最好的情况下是0(n),这种情况发生在列表已是有序的情况下,实际上,列表越接近有序,插入排序的比对次数就越少;从这个情况入手,谢尔排序以插入排序作为基础,对无序表进行“间隔”划分子列表,每个子列表都执行插入排序。随着子列表的数量越来越少,无序表的整体越来越接近有序,从而减少整体排序的比对次数间隔为3的子列表,子列表分别插入排序后的整体状况更接近有序最原创 2021-10-22 09:56:18 · 263 阅读 · 2 评论 -
【python & 选择排序算法】
【python & 选择排序算法】1、算法原理2、 简单排序代码示例3、复杂度分析1、算法原理选择排序对冒泡排序进行了改进,保留了其基本的多趟比对思路,每趟都使当前最大项就位。令但选择排序对交换进行了削减,相比起冒泡排序进行多次交换,每趟仅进行1次交换,记录最大项的所在位置,最后再跟本趟最后一项交换。原理图示:2、 简单排序代码示例'''@ time :2021年10月21日@ author : wupke@ description: 使用选择排序算法'''原创 2021-10-21 22:40:13 · 113 阅读 · 0 评论 -
【python & 插入排序算法】
【python & 插入排序算法】1、原理特点2、复杂度简单排序代码1、原理特点代补充。。。。。。2、复杂度代补充。。。。。。简单排序代码'''@ time :2021年10月21日@ author : wupke@ description: 插入排序算法'''import time# # # start1 = time.clock()def insertionSort(alist): for index in range(1,le原创 2021-10-21 22:29:22 · 171 阅读 · 0 评论 -
【python & 冒泡排序算法】
【python & 冒泡排序算法】1、原理特点2、简单排序代码3、复杂度分析4、冒泡算法的性能改进版本1、原理特点2、简单排序代码'''@ time :2021年10月21日@ author : wupke@ description: 冒泡排序 算法'''import timedef bubbleSort(list): for passnum in range (len(list)-1,0,-1): # for passnum in ra原创 2021-10-21 22:24:05 · 180 阅读 · 0 评论 -
【python&顺序查找算法、二分查找算法、二分法查找的递归解法】
【顺序查找算法、二分查找算法、二分法查找的递归解法】顺序查找算法二分查找算法二分法查找的递归解法顺序查找算法# 顺序查找项,并输出其索引def sequentialSearch(list,item): pos = 0 found = False # 按照索引持续对比查找 while pos < len(list) and not found: # 对比找到索引项 if list[pos] == item:原创 2021-10-20 20:58:54 · 177 阅读 · 0 评论 -
【python&货币机找零问题的动态规划算法】
【货币机找零问题的动态规划算法】思路解析代码结果思路解析动态规划采取了一条更加有条理的方式来得到问题的解:从最简单的“1分钱找零”的最优解开始,逐步递加上去,直到我们需要的找零钱数在找零的递加过程中,设法保持每一分钱的递加都是最优解,一直加到所要求解的找零钱数,也就得到了最优 解递加的过程要保持最优解的关键是:其依赖于更少钱数最优解的简单计算,而更少钱数的最优解在大数目之前已经得到保存下来了。问题的最优解包含了更小子规模问题的最优解,这是一个问题可以用动态规划策略解决的必要条件。动态原创 2021-10-20 10:30:33 · 296 阅读 · 0 评论 -
【python&货币机找零问题的递归算法及其优化】
【货币机找零问题的递归算法及其优化】1、货币机找零问题的一般递归解法代码运行结果2、优化后的递归解法优化思路与理念代码优化效果3、补充:Python编程中计算程序运行时间的方法1、货币机找零问题的一般递归解法代码# @author:wpk# @time:2021 10 19# @description: deal the problem change money with recursionimport timedef recMC(coinValueList,change):原创 2021-10-19 12:20:12 · 390 阅读 · 0 评论 -
【python&递归思想解决问题的示例】
递归思想解决问题的示例递归算法的理解1、绘画小树苗代码效果2、数字求和3、整数转化为任意进制递归算法的理解递归的精髓在于将问题分解为规模更小的相同问题持续解决,直到问题的规模可以用非常简单直接的方式来解决。递归三要素:① 递归算法包含一个基本结束条件(最小规模问题直接可以解决)② 递归算法必须能改变状态,向基本结束条件演进(在不断的减小问题的规模)③ 递归算法必须调用自身(即是解决减小规模的相同问题)1、绘画小树苗代码import turtledef tree(bra原创 2021-10-13 21:50:57 · 313 阅读 · 0 评论