数据结构
妙手书生2016
爱好编程与论文写作
展开
-
动态规划-数据结构-最全介绍及代码
目录动态规划简介:具有什么特征的问题可以用动态规划求解:和其他同类算法相比动态规划有什么样的特点:动态规划常用来解决的问题类型:参考链接:动态规划简介:动态规划算法的基本思想是:将带求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解中得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,避免重复求解。该思想与记忆化搜索类似,即将计算步骤中的过程保存下来,避免重复运算具有什么特征的问题可以用动态规划求解: 该问题原创 2020-12-12 23:16:00 · 299 阅读 · 0 评论 -
二分查找算法-数据结构-代码实现
目录二分查找算法介绍:算法实现过程:算法前提:python代码及测试案例:二分查找算法介绍:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。算法实现过程:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查原创 2020-12-10 22:38:21 · 424 阅读 · 0 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 976-三角形的最大周长
题目描述:给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8提示:3 <= A.length <= 100001 <= A[i] <= 10^6题目解析:1...原创 2020-12-09 22:51:32 · 372 阅读 · 1 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 350-两个数组的交集 II
目录题目描述:解题分析:我的答案:题目描述:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算..原创 2020-12-08 10:41:24 · 307 阅读 · 2 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 1498-满足条件的子序列数目(9行代码解决)
目录题目描述:结题分析:我的答案:题目描述:给你一个整数数组 nums 和一个整数 target 。请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目。由于答案可能很大,请将结果对 10^9 + 7 取余后返回。示例 1:输入:nums = [3,5,6,7], target = 9输出:4解释:有 4 个子序列满足该条件。[3] -> 最小元素 + 最大元素 <= target (3 +.原创 2020-12-07 20:55:52 · 445 阅读 · 0 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 1630- 等差子数组(9行代码解决)
目录题目描述:解题思路:我的答案:题目描述:如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i+1] - s[i] == s[1] - s[0] 都成立。例如,下面这些都是 等差数列 :1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9下面的数列 不是等差数列 :1, 1, 2, 5, 7给你一个由 n 个整数组成的数组 num原创 2020-12-06 10:33:23 · 168 阅读 · 0 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 1640-能否连接形成数组
目录题目描述:思路分析:我的答案:题目描述:给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。示例 1:输入:arr = [85], pieces = [[85]]输出:.原创 2020-12-05 23:20:32 · 260 阅读 · 0 评论 -
力扣 (LeetCode) - 排序-刷题-面试题 56-合并区间
目录题目描述:解题思路:我的答案:题目描述:示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。注意:输入类型已于2019年4月15日更改。 请重置.原创 2020-12-03 22:15:12 · 215 阅读 · 0 评论 -
选择排序(排序算法)-数据结构-代码实现及代码注释
目录1、算法简介2、算法性能3、算法流程4、python代码实现及注释1、算法简介选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。2、算法性能时间复杂度选择排序的交换操作介于 0 和 (n - 1)次之间。选择排序的原创 2020-12-03 11:22:58 · 498 阅读 · 0 评论 -
计数排序(排序算法)-python代码及注释-包含测试案例
目录1、计数排序简介2、说明3、算法过程4、python代码1、计数排序简介计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。[1]当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排...原创 2020-12-03 09:53:46 · 153 阅读 · 0 评论 -
归并排序-代码及测试案例-python实现包含注释-原理介绍
目录1、归并排序原理介绍2、归并排序算法步骤3、python代码及注释1、归并排序原理介绍归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。2、归并排序算法步骤第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列第二步原创 2020-12-01 21:02:29 · 185 阅读 · 0 评论 -
快速排序算法(冒泡排序算法的改进)-递归实现-数据结构-python实现及测试实例
目录快速排序算法介绍算法原理介绍方案1算法原理介绍2python函数实现及测试案例快速排序算法介绍快速排序其实是在冒泡排序的基础上做出的一个改进.。冒泡排序看另外一篇博客:https://blog.csdn.net/weixin_36602742/article/details/110244894快速排序算法利用的是一趟快速排序,基本内容是选择一个数作为准基数,然后利用这个准基数将遗传数据分为两个部分,第一部分比这个准基数小,都放在准基数的左边,第二部分都比这个准基数大,放.原创 2020-11-28 23:32:46 · 646 阅读 · 0 评论 -
python 元祖-列表-字典-排序及其在leetcode题目中的应用
目录Python中元祖-列表以及字典的创建和介绍元祖:列表:字典:Python中内置排序函数sort()以及sorted()函数介绍使用sort排序使用sorted()排序sort()以及sorted()函数中key参数的应用对复杂的元组排序根据字典的value排序leetcode中的应用242. 有效的字母异位词解决方案Python中元祖-列表以及字典的创建和介绍 元祖: 在Python中用小括号()创建()代表tuple元祖数据类型,原创 2020-11-28 10:51:39 · 444 阅读 · 0 评论 -
数据结构-Python-排序-除法-整除-非整除-保留小数位数
目录摘要:背景:问题描述:解答方案答案解析:摘要:本文主要涉及数据结构中的排序算法,以及Python中的除法问题,保留特定小数位数的问题背景:leetcode第1491题:去掉最低工资和最高工资后的工资平均值问题描述:给你一个整数数组salary,数组里每个数都是 唯一的,其中salary[i] 是第i个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,300...原创 2020-11-27 22:05:11 · 727 阅读 · 0 评论 -
数据结构--排序--冒泡排序BubbleSort--python语言描述
数据结构排序冒泡排序1、描述:冒泡排序是两两比较待排序记录的关键字,如果次序相反则交换两个记录的位置,直到序列中所有记录有序排列。若是按照升序排列,每趟将序列元素中最大值元素交换到最后的位置,就像气泡从水里面冒出来一样。2、python代码及注释如下:# -*- coding: utf-8 -*def BubbleSort(a):#定义冒泡排序函数 Flag='True' # 检测标志 i=1 # 设交换次数为i=1 while i<len(a) and原创 2020-11-27 20:05:19 · 387 阅读 · 2 评论 -
数据结构--排序--希尔排序ShellSort--python语言描述
数据结构排序希尔排序1、描述:将一条待排序的记录按照其关键字值的大小插入已排序记录序列中的正确位置,依次重复,直到全部记录都插入完成。2、python代码如下:def ShellSort(b,d): for k in d: j=k while j<len(b): p=j m=j while m>=k: if b[p]<b[m-原创 2020-11-27 18:50:16 · 106 阅读 · 0 评论 -
数据结构--排序--插入排序--python语言描述
数据结构排序插入排序1、描述:将一条待排序的记录按照其关键字值的大小插入已排序记录序列中的正确位置,依次重复,直到全部记录都插入完成。2、python代码如下:# -*- coding: utf-8 -*#插入排序的函数,a为list类型def InsertSort(a): for i in range(1,len(a)): p=i j=i-1 while j>=0: if a[p]<...原创 2020-11-26 22:44:03 · 167 阅读 · 0 评论