• 两种java实现二分查找的方式

    2021-09-27 13:51:58

    目录1、二分查找算法思想2、二分查找图示说明3、二分查找优缺点3、java代码实现3.1 使用递归实现3.1 不使用递归实现(while循环)3.3 测试4、时间复杂度5、空间复杂度起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就介绍两种方法1、二分查找算法思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次

  • 两种java实现二分查找的方式

    2021-09-27 13:51:58

    目录1、二分查找算法思想2、二分查找图示说明3、二分查找优缺点3、java代码实现3.1 使用递归实现3.1 不使用递归实现(while循环)3.3 测试4、时间复杂度5、空间复杂度起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就介绍两种方法1、二分查找算法思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次

  • Java基础之toString的序列化 匿名对象 复杂度精解

    2021-09-26 20:01:18

    目录序列化匿名对象复杂度时间复杂度大O的渐进表示法时间复杂度的分类计算时间 复杂度的方法空间复杂度toString的序列化、匿名对象、复杂度序列化toString 方法的原理就是序列化,他可以帮助我们讲一个抽象的对象变得具体,譬如把对象里面的名字、年龄、身高等信息具象为字符串。(总之,序列化:将对象转化为字符串;反序列化:将字符串转化为对象)。匿名对象匿名对象适用于只想使用一次的情况,因为匿名对象

  • Java基础之toString的序列化 匿名对象 复杂度精解

    2021-09-26 20:01:18

    目录序列化匿名对象复杂度时间复杂度大O的渐进表示法时间复杂度的分类计算时间 复杂度的方法空间复杂度toString的序列化、匿名对象、复杂度序列化toString 方法的原理就是序列化,他可以帮助我们讲一个抽象的对象变得具体,譬如把对象里面的名字、年龄、身高等信息具象为字符串。(总之,序列化:将对象转化为字符串;反序列化:将字符串转化为对象)。匿名对象匿名对象适用于只想使用一次的情况,因为匿名对象

  • C++ 实现LRU 与 LFU 的缓存算法

    2021-09-13 12:54:14

    目录一、LRU (Least Recently Used) 缓存二、LFU (Least Frequently Used) 缓存一、LRU (Least Recently Used) 缓存详见 LeetCode Q146https:// leetcode.com/problems/l ru-cache/https:// leetcode-cn.com/problem s/lru-cache/问题描

  • C++ 实现LRU 与 LFU 的缓存算法

    2021-09-13 12:54:14

    目录一、LRU (Least Recently Used) 缓存二、LFU (Least Frequently Used) 缓存一、LRU (Least Recently Used) 缓存详见 LeetCode Q146https:// leetcode.com/problems/l ru-cache/https:// leetcode-cn.com/problem s/lru-cache/问题描

  • C++或Go求矩阵里的岛屿的数量详解

    2021-09-09 16:52:35

    目录1、C++实现2、go语言实现参考文献总结给你一个由 ‘1'(陆地)和 ‘0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,

  • C++或Go求矩阵里的岛屿的数量详解

    2021-09-09 16:52:35

    目录1、C++实现2、go语言实现参考文献总结给你一个由 ‘1'(陆地)和 ‘0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,

  • 关于python类SortedList详解

    2021-09-04 14:51:51

    目录SortedList 有序序列方法1.添加值2.移除值3.查找4.迭代值5. 其他SortedList 有序序列class sortedcontainers.SortedList(iterable=None, key=None)方法1.添加值    SortedList.add(value) 添加新元素,并排序。时间复杂度O(log(n)).    SortedList.update(iter

  • 关于python类SortedList详解

    2021-09-04 14:51:51

    目录SortedList 有序序列方法1.添加值2.移除值3.查找4.迭代值5. 其他SortedList 有序序列class sortedcontainers.SortedList(iterable=None, key=None)方法1.添加值    SortedList.add(value) 添加新元素,并排序。时间复杂度O(log(n)).    SortedList.update(iter

  • 为何Redis使用跳表而非红黑树实现SortedSet

    2021-09-01 10:54:39

    目录什么是跳表跳表的意义究竟在于何处?跳表的搜索时间复杂度跳表是不是很费内存?插入和删除的时间复杂度插入删除跳表索引动态更新跳表的代码实现(Java 版)数据结构定义搜索算法插入和删除算法插入删除知道跳表(Skip List)是在看关于Redis的书的时候,Redis中的有序集合使用了跳表数据结构。接着就查了一些博客,来学习一下跳表。后面会使用Java代码来简单实现跳表。什么是跳表跳表由Willi

  • 为何Redis使用跳表而非红黑树实现SortedSet

    2021-09-01 10:54:39

    目录什么是跳表跳表的意义究竟在于何处?跳表的搜索时间复杂度跳表是不是很费内存?插入和删除的时间复杂度插入删除跳表索引动态更新跳表的代码实现(Java 版)数据结构定义搜索算法插入和删除算法插入删除知道跳表(Skip List)是在看关于Redis的书的时候,Redis中的有序集合使用了跳表数据结构。接着就查了一些博客,来学习一下跳表。后面会使用Java代码来简单实现跳表。什么是跳表跳表由Willi

  • 使用python实现两数之和的画解算法

    2021-08-31 14:53:36

    题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1]

  • 使用python实现两数之和的画解算法

    2021-08-31 14:53:36

    题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1]

  • Java list与set中contains()方法效率案例详解

    2021-08-31 12:50:28

    list.contains(o) :遍历集合所有元素,用每个元素和传入的元素进行 equals 比较,如果集合元素有 n 个,则会比较 n 次,所以时间复杂度为 O(n) 。方法源码如下:// ArrayList 中的方法public boolean contains(Object o) {      return indexOf(o) >= 0;} public int indexOf(Obje

  • Java list与set中contains()方法效率案例详解

    2021-08-31 12:50:28

    list.contains(o) :遍历集合所有元素,用每个元素和传入的元素进行 equals 比较,如果集合元素有 n 个,则会比较 n 次,所以时间复杂度为 O(n) 。方法源码如下:// ArrayList 中的方法public boolean contains(Object o) {      return indexOf(o) >= 0;} public int indexOf(Obje

  • JAVA十大排序算法之桶排序详解

    2021-08-23 14:14:55

    目录桶排序代码实现时间复杂度算法稳定性总结桶排序桶排序是计数排序的升级,计数排序可以看成每个桶只存储相同元素,而桶排序每个桶存储一定范围的元素,通过函数的某种映射关系,将待排序数组中的元素映射到各个对应的桶中,对每个桶中的元素进行排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序),最后将非空桶中的元素逐个放入原序列中。桶排序需要尽量保证元素分散均匀,否则当所有数据集中在同一个桶中时,桶排

  • JAVA十大排序算法之桶排序详解

    2021-08-23 14:14:55

    目录桶排序代码实现时间复杂度算法稳定性总结桶排序桶排序是计数排序的升级,计数排序可以看成每个桶只存储相同元素,而桶排序每个桶存储一定范围的元素,通过函数的某种映射关系,将待排序数组中的元素映射到各个对应的桶中,对每个桶中的元素进行排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序),最后将非空桶中的元素逐个放入原序列中。桶排序需要尽量保证元素分散均匀,否则当所有数据集中在同一个桶中时,桶排

  • Java集合和数据结构排序实例详解

    2021-08-20 10:54:46

    目录概念插入排序直接插入排序代码实现性能分析希尔排序代码实现性能分析选择排序直接选择排序代码实现性能分析堆排序代码实现性能分析交换排序冒泡排序代码实现性能分析快速排序代码实现性能分析非递归实现快速排序代码实现性能分析归并排序归并排序代码实现性能分析非递归实现归并排序代码实现性能分析海量数据的排序问题总结概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上

  • Java集合和数据结构排序实例详解

    2021-08-20 10:54:46

    目录概念插入排序直接插入排序代码实现性能分析希尔排序代码实现性能分析选择排序直接选择排序代码实现性能分析堆排序代码实现性能分析交换排序冒泡排序代码实现性能分析快速排序代码实现性能分析非递归实现快速排序代码实现性能分析归并排序归并排序代码实现性能分析非递归实现归并排序代码实现性能分析海量数据的排序问题总结概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上

  • 浅谈C++标准库

    2021-08-18 19:52:59

    目录C++模板C++标准库C++ 面向对象类库string标准模板库vectorsetlistmapqueuepriority_queuestackpairalgorithm下的常用函数C++模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码模板是创建泛型类或函数的蓝图或公式可以使用模板来定义函数和类//函数模板template <typename type> ret-ty

  • 浅谈C++标准库

    2021-08-18 19:52:59

    目录C++模板C++标准库C++ 面向对象类库string标准模板库vectorsetlistmapqueuepriority_queuestackpairalgorithm下的常用函数C++模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码模板是创建泛型类或函数的蓝图或公式可以使用模板来定义函数和类//函数模板template <typename type> ret-ty

  • C++实现LeetCode(147.链表插入排序)

    2021-07-29 06:58:26

    [LeetCode] 147. Insertion Sort List 链表插入排序Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in th

  • C++实现LeetCode(147.链表插入排序)

    2021-07-29 06:58:26

    [LeetCode] 147. Insertion Sort List 链表插入排序Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in th

  • C++实现LeetCode(147.链表插入排序)

    2021-07-28 19:51:04

    [LeetCode] 147. Insertion Sort List 链表插入排序Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in th

  • C++实现LeetCode(147.链表插入排序)

    2021-07-28 19:51:04

    [LeetCode] 147. Insertion Sort List 链表插入排序Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in th

  • C++实现LeetCode(110.平衡二叉树)

    2021-07-23 15:51:12

    [LeetCode] 110.Balanced Binary Tree 平衡二叉树Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as:a binary tree in which the depth of the t

  • C++实现LeetCode(110.平衡二叉树)

    2021-07-23 15:51:12

    [LeetCode] 110.Balanced Binary Tree 平衡二叉树Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as:a binary tree in which the depth of the t

  • C++实现LeetCode(136.单独的数字)

    2021-07-19 10:51:29

    [LeetCode] 136.Single Number 单独的数字Given a non-empty array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Cou

  • C++实现LeetCode(136.单独的数字)

    2021-07-19 10:51:29

    [LeetCode] 136.Single Number 单独的数字Given a non-empty array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Cou

  • 线段树详解以及C++实现代码

    2021-07-18 16:52:34

    目录应用场景算法思想查询操作修改操作算法实现建树查询修改总结应用场景假设有这样的问题:有n个数,m次操作,操作分为:修改某一个数或者查询一段区间的值分析下,如果针对数组元素的修改可以是O(1)完成,求某个区间值需要O(n)才可以完成,如果m和n都很大的情况,这个复杂度就很难接受了。我们之前学过的前缀和算法可以解决区间求和的问题,并且时间复杂度是O(1),但如果涉及到修改操作,前缀和数组都需要重新计

  • 线段树详解以及C++实现代码

    2021-07-18 16:52:34

    目录应用场景算法思想查询操作修改操作算法实现建树查询修改总结应用场景假设有这样的问题:有n个数,m次操作,操作分为:修改某一个数或者查询一段区间的值分析下,如果针对数组元素的修改可以是O(1)完成,求某个区间值需要O(n)才可以完成,如果m和n都很大的情况,这个复杂度就很难接受了。我们之前学过的前缀和算法可以解决区间求和的问题,并且时间复杂度是O(1),但如果涉及到修改操作,前缀和数组都需要重新计

  • C++实现LeetCode(73.矩阵赋零)

    2021-07-17 13:51:14

    [LeetCode] 73.Set Matrix Zeroes 矩阵赋零Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.click to show follow up.Follow up:Did you use extra spaceA straight for

  • C++实现LeetCode(73.矩阵赋零)

    2021-07-17 13:51:14

    [LeetCode] 73.Set Matrix Zeroes 矩阵赋零Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.click to show follow up.Follow up:Did you use extra spaceA straight for

  • 手把手教你搞懂冒泡排序和选择排序

    2021-07-15 18:57:07

    目录冒泡排序原理:选择排序原理:总结冒泡排序原理:从头(左边)开始比较每一对相邻的元素,如果第1个比第2个大,就交换它们的位置,执行完一轮后,最末尾(最右边)就是最大的元素。举例:假设存在数组nums={6,8,2,9,4},对nums数组进行排序从左往右开始,拿出两个元素进行对比,出现两种情况:1.左边元素 <= 右边元素,不变2.左边元素 > 右边元素,交换他们的位置(这里可以写成>=吗?不行

  • 手把手教你搞懂冒泡排序和选择排序

    2021-07-15 18:57:07

    目录冒泡排序原理:选择排序原理:总结冒泡排序原理:从头(左边)开始比较每一对相邻的元素,如果第1个比第2个大,就交换它们的位置,执行完一轮后,最末尾(最右边)就是最大的元素。举例:假设存在数组nums={6,8,2,9,4},对nums数组进行排序从左往右开始,拿出两个元素进行对比,出现两种情况:1.左边元素 <= 右边元素,不变2.左边元素 > 右边元素,交换他们的位置(这里可以写成>=吗?不行

  • C++ 实现桶排序的示例代码

    2021-07-12 14:51:51

    目录原理实现步骤:模拟生成整数随机数桶排序实现完整版可运行程序时间复杂度计算桶排序:整数 原理原理简述:按照需要排序数组的实际情况,生成一个一定长度的一维数组,用于统计需要排序数组的不同数值的重复次数,完成统计后,再按顺序重复输出该数值实现步骤:    确定需要排序数组的最大值和最小值    生成桶数组,并初始化    对需要排序数组进行统计,统计结果放入相应的桶中    循环输出桶,并替换原序列

  • C++ 实现桶排序的示例代码

    2021-07-12 14:51:51

    目录原理实现步骤:模拟生成整数随机数桶排序实现完整版可运行程序时间复杂度计算桶排序:整数 原理原理简述:按照需要排序数组的实际情况,生成一个一定长度的一维数组,用于统计需要排序数组的不同数值的重复次数,完成统计后,再按顺序重复输出该数值实现步骤:    确定需要排序数组的最大值和最小值    生成桶数组,并初始化    对需要排序数组进行统计,统计结果放入相应的桶中    循环输出桶,并替换原序列

  • 新手初学Java常见排序算法

    2021-07-07 19:51:47

    目录1、冒泡排序2、选择排序3、简单插入排序4、希尔排序5、归并排序6、快速排序总结1、冒泡排序排序原理:相邻两个元素比较,如果前者比后者大,则交换两个元素。每执行一次,都会确定一个最大值,其位置就固定了,下一次就不需要再参与排序了。时间复杂度:O(n^2)稳定性:稳定具体实现:public class Bubble {    /**     * 对数组a中的元素进行排序     */    pu

  • 新手初学Java常见排序算法

    2021-07-07 19:51:47

    目录1、冒泡排序2、选择排序3、简单插入排序4、希尔排序5、归并排序6、快速排序总结1、冒泡排序排序原理:相邻两个元素比较,如果前者比后者大,则交换两个元素。每执行一次,都会确定一个最大值,其位置就固定了,下一次就不需要再参与排序了。时间复杂度:O(n^2)稳定性:稳定具体实现:public class Bubble {    /**     * 对数组a中的元素进行排序     */    pu

  • Java实现LeetCode(两数之和)

    2021-06-30 12:51:48

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回[0, 1]思路一:最直接的思维,两次遍历查询,时间复杂度O(N*N)。代码:public static int[] twoSu

  • Java实现LeetCode(两数之和)

    2021-06-30 12:51:48

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回[0, 1]思路一:最直接的思维,两次遍历查询,时间复杂度O(N*N)。代码:public static int[] twoSu

  • 浅谈c++性能测试工具之计算时间复杂度

    2021-06-03 16:53:06

    google benchmark已经为我们提供了类似的功能,而且使用相当简单。具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂度分别为O(n), O(logn), O(n^n)的测试用例:// 这里都是为了演示而写成的代码,没有什么实际意义static void bench_N(benchmark::State& state){    int n = 0;    for ([[may

  • 浅谈c++性能测试工具之计算时间复杂度

    2021-06-03 16:53:06

    google benchmark已经为我们提供了类似的功能,而且使用相当简单。具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂度分别为O(n), O(logn), O(n^n)的测试用例:// 这里都是为了演示而写成的代码,没有什么实际意义static void bench_N(benchmark::State& state){    int n = 0;    for ([[may

  • c++ 数据结构map的使用详解

    2021-04-28 17:53:33

    map的常用用法map 表示映射,可以将任何基本类型(包括 STL 容器)映射到任何基本类型(包括 STL 容器),例如可以建立如 int 到 double,string 到 int 的映射等。map 提供一对一的 hash,该功能类似 Python 的字典:    第一个称为键( key ),每个关键字只能在 map 中出现一次;    第二个称为该键的值( value );    1. 头文件

  • c++ 数据结构map的使用详解

    2021-04-28 17:53:33

    map的常用用法map 表示映射,可以将任何基本类型(包括 STL 容器)映射到任何基本类型(包括 STL 容器),例如可以建立如 int 到 double,string 到 int 的映射等。map 提供一对一的 hash,该功能类似 Python 的字典:    第一个称为键( key ),每个关键字只能在 map 中出现一次;    第二个称为该键的值( value );    1. 头文件

  • Python 列表(List)的底层实现原理分析

    2021-03-09 20:54:27

    Python 列表的数据结构是怎么样的?列表实际上采用的就是数据结构中的顺序表,而且是一种采用分离式技术实现的动态顺序表但这是不是Python的列表?我的结论是顺序表是列表的一种实现方式。书上说的是:列表实现可以是数组和链表。顺序表是怎么回事?顺序表一般是数组。列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。列表实现是基于数组或基于链表结构的。当使用列表迭代器的时候,双链表结

  • Python 列表(List)的底层实现原理分析

    2021-03-09 20:54:27

    Python 列表的数据结构是怎么样的?列表实际上采用的就是数据结构中的顺序表,而且是一种采用分离式技术实现的动态顺序表但这是不是Python的列表?我的结论是顺序表是列表的一种实现方式。书上说的是:列表实现可以是数组和链表。顺序表是怎么回事?顺序表一般是数组。列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。列表实现是基于数组或基于链表结构的。当使用列表迭代器的时候,双链表结

  • python如何实现递归转非递归

    2021-02-25 10:55:04

    先说总结,这种方案总的来说就是机械化的强转,时间复杂度和空间复杂度没什么变化,唯二的优点可能是1. 不会爆栈,2. 节省了函数调用的开销而且最终产出的代码效果不那么美观,比较冗长思路是:当发生递归调用时,模拟函数调用的 压栈 。并处理 入参 和 返回值 和 记录返回到当前栈的时候该继续从哪里执行以如下递归( leetcode爬楼梯 )为例def f(n): if n <= 2:  return n

  • python如何实现递归转非递归

    2021-02-25 10:55:04

    先说总结,这种方案总的来说就是机械化的强转,时间复杂度和空间复杂度没什么变化,唯二的优点可能是1. 不会爆栈,2. 节省了函数调用的开销而且最终产出的代码效果不那么美观,比较冗长思路是:当发生递归调用时,模拟函数调用的 压栈 。并处理 入参 和 返回值 和 记录返回到当前栈的时候该继续从哪里执行以如下递归( leetcode爬楼梯 )为例def f(n): if n <= 2:  return n

 60    1 2 3 下一页 尾页

分类点击榜

    栏目ID=0的表不存在(操作类型=0)

分类评论榜

    栏目ID=0的表不存在(操作类型=0)

微信扫一扫

易采站长站微信账号