2021五月归档(20210503-20210604)
文章平均质量分 87
第十周_20210503-20210509_9
第十一周_20210510-20210516_7
第十二周_20210517-20210523_7
第十三周_20210524-20210530_3
第十四周_就0604写了一篇_无聊的考试!
菜菜的大数据开发之路
Java技术栈 AND 大数据开发,学习笔记, 拒绝水文
展开
-
?- LeeCode 53, 最大子序和(Easy)(暴力法, 分治法, 动态规划法)
2.x LeeCode 53, 最大子序和(Easy)(暴力法, 分治法, 动态规划法)[案例需求]Category Difficulty Likes Dislikesalgorithms Easy (54.28%) 3276 -Tagsarray | divide-and-conquer | dynamic-programming给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1原创 2021-07-01 16:36:44 · 183 阅读 · 0 评论 -
一, 基于Java 的分治算法和典型实现栗子(仔细看, 能行)
一, 分治算法概述1.1 分治法的思想和特点分治算法是采用了分治思想的一种算法, 什么是分治呢?分值策略: 分治, 字面上的解释就是"分而治之",将原问题划分为n个规模较小而结构与原问题相似的子问题; 递归的解决这些子问题, 然后再合并其结果, 就得到原问题的解;将父问题分解为子问题的同等方式求解, 这和递归的概念很吻合, 所以在分治算法通常以递归的方式实现(当然也是有非递归的实现方式). 分治算法的描述从字面上也很容易理解, 分, 治, 其实还有个合并的过程:- 分解(Divide): 将原创 2021-06-04 12:50:15 · 288 阅读 · 3 评论 -
tag数组-刷题预备知识-0.5 二维数组概述 + lt.48旋转图像 + 多角度旋转通用方法 1 (待补充)
文章目录二, 二维数组2.1. 二维数组简介2.2. LeetCode 48. 旋转图像(Medium)二, 二维数组2.1. 二维数组简介二维数组是一种结构较为特殊的数组,只是将数组中的每个元素变成了一维数组所以二维数组的本质上仍然是一个一维数组,内部的一维数组仍然从索引 0 开始,我们可以将它看作一个矩阵,并处理矩阵的相关问题。示例如下:类似一维数组,对于一个二维数组 A = [[1, 2, 3, 4],[2, 4, 5, 6],[1, 4, 6, 8]] ,计算机同样会在内存中申请一原创 2021-05-26 14:36:51 · 383 阅读 · 1 评论 -
2.<tag-数组>-leetcode.56-合并区间Java, Python实现 1
1. LeetCode 56. 合并区间 (Medium)[案例需求]以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6原创 2021-05-25 23:23:02 · 269 阅读 · 2 评论 -
Linux运行级别概述 以及 CentOS 7以上系统修改密码的方式
一, 运行级别概述所谓运行级别,简单点来说,就是指操作系统当前正在运行的功能级别。在我们使用的Linux系统中,一共定义了7种运行级别,从0到6,每一种运行级别都具有不同的功能inittab配置文件在配置文件目录下有一个inittab文件/etc/inittab,用于专门存储系统的运行级别,当Linux系统启动时,会查询这个运行级别。Linux下的7种运行级别0 halt 关机,代表系统停机状态,默认情况下,系统运行级别不能设置为0,否则电脑一开机就进入关机模式,电脑将不能正常启动1原创 2021-05-25 10:12:38 · 192 阅读 · 1 评论 -
Linu进阶-Shell编程下-常用的shell工具(cut, sed, awk)(待复习完善)
文章目录九, 常用的Shell工具(cut, sed, awk, sort, grep)9.1 cut : 剪切文件中的数据9.2 sed : 替换, 删除, 更新文件中的行内容9.3 awk命令十, 几道面试题九, 常用的Shell工具(cut, sed, awk, sort, grep)9.1 cut : 剪切文件中的数据cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。[基本语法] cut [选项参原创 2021-05-24 21:21:32 · 264 阅读 · 0 评论 -
tag数组-刷题预备知识-0.1 一维数组 + lt.724 寻找数组的中心下标 + lt.35 搜索插入位置 1
数组的随机访问方法1.1 Leetcode 724 寻找数组的中心下标(easy)[案例需求]给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。注意:中心下标可能出现在数组的两端。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之.原创 2021-05-22 22:26:10 · 259 阅读 · 4 评论 -
Linu进阶-Shell编程入门上 hf
一, Shell编程入门为什么大数据需要学习shell编程需要看懂运维人员编写的Shell程序;管理集群(编写集群时间同步的crontab脚本, 定时维护数据库等等);什么是shell?shell是一个命令行解释器,它接收应用程序/用户的命令, 然后调用操作系统内核, 它是用户使用操作系统的桥梁;shell编程就是对一堆Linux命令的逻辑化处理;Shell环境二, 第一个shell脚本要点:脚本以 #!/bin/bash 开头脚本被赋予执行权限原创 2021-05-22 11:30:31 · 425 阅读 · 0 评论 -
十-8, 多叉树概述(2-3树, B树,B+树和B*树)-待完善
10.1 2-3树10.1.1 2-3树存在的意义二叉排序树–>平衡二叉树–>2-3树前面我们说到,二叉排序树二叉排序树(BST)结合了数组的查找速度快,以及链表的增删方便的优点, 但是二叉排序树在最好的情况下查找,插入和删除的时间复杂度为 o(logn), 而在最坏情况下会退化成链表的形式, 复杂度为 o(height) = o(n);平衡二叉树为了使二叉排序树(BST)更加的匀称以提高搜索的效率, 我们引入了平衡二叉树(AVL), 每次在添加一个新的节点后,平原创 2021-05-17 23:22:59 · 398 阅读 · 0 评论 -
十一, Java实现图的深度优先遍历(DFS)和广度优先遍历(BFS)
文章目录11.1 图的概述11.1.1 什么是图?11.1.2 线性表, 树, 图的对比11.1.3 图的常见概念11.2 图的存储结构11.2.1 邻接矩阵(Adjacency Matrix)11.2.2 邻接表(Adjacency List)11.3 图的遍历11.3.1 图的深度优先遍历(DFS)11.3.2 图的广度优先遍历(BFS)11.1 图的概述11.1.1 什么是图?图(graph)是一种数据结构,它是由顶点的有穷非空集合V和顶点之间边的集合E组成通常表示为:G(V,E)。其中 G原创 2021-05-17 23:19:27 · 1061 阅读 · 2 评论 -
十-7,平衡二叉树概述及其Java实现
文章目录十四, 平衡二叉树(AVL)10.1 平衡二叉树概述10.2 求平衡二叉树的平衡因子(判断AVL树是否平衡)10.3 二叉树的左旋及其Java实现10.4 二叉树的右旋10.5 二叉树的双旋转十四, 平衡二叉树(AVL)10.1 平衡二叉树概述[基本定义]平衡二叉树又称为AVL树, 是一种特殊的二叉排序树.其左右子树都是平衡二叉树以树中所有节点为根的树的左右子树高度之差的绝对值不超过1.[平衡因子]为了判断一棵二叉树是否是平衡二叉树, 引入了平衡因子的概念. 平衡因子是针对树中原创 2021-05-15 09:57:12 · 1176 阅读 · 0 评论 -
十-6, 一文搞定二叉排序树的创建, 遍历, 查找和删除(Java实现)
文章目录10.1 二叉排序树的概述10.2 二叉排序树创建和遍历的实现10.3 二叉排序树查找和删除指定节点的实现10.1 二叉排序树的概述[二叉排序树]二叉排序树(Binary Search Tree),或者二叉搜索树指的是一棵空树或者具有下列性质的二叉树:左子树< 根节点 < 右子树任意节点的左右子树也分别为二叉排序树10.2 二叉排序树创建和遍历的实现[实现思路]在二叉树的无论是遍历还是查找删除时, 我们通常是在结点类中实际编写对结点各种操作的原创 2021-05-12 19:34:46 · 992 阅读 · 0 评论 -
十-5, 哈夫曼树概述及Java实现
文章目录12.1 哈夫曼树概述12.1.1 与哈夫曼树相关的概念12.1.2 什么是哈夫曼树12.2 哈夫曼树的构造方法12.3 哈夫曼树的代码实现12.3 哈夫曼编码(待补充)12.1 哈夫曼树概述12.1.1 与哈夫曼树相关的概念概念含义1. 路径从树中一个结点到另一个结点的分支所构成的路线2. 路径长度路径上的分支数目3. 树的路径长度从根到每个结点的路径长度之和4. 带权路径长度结点具有权值, 从该结点到根之间的路径长度乘以结点的权值, 就是该结原创 2021-05-11 18:46:58 · 319 阅读 · 1 评论 -
十-4, 堆排序及其Java实现
文章目录前置知识:稳定性:`不稳定`原理演示:基本思想:Java实现的具体步骤代码示例:前置知识:堆:可以把堆看做一棵顺序存储的完全二叉树,这棵树满足,所有的子结点都不大于或不小于其父结点。大顶堆:每个结点皆大于或等于其左右孩子结点; 一般升序采用大顶堆;小顶堆:每个结点皆小于或等于其左右孩子结点; 一般降序采用小顶堆;由于完全二叉树的性质(只有最下面两层结点度小于2,并且最下一层叶结点集中在靠左的位置上),使得堆很容易用数组来表示,每个节点对应数组的一个元素, 拿上图一大顶堆为例得到下图原创 2021-05-10 20:58:09 · 1635 阅读 · 0 评论 -
十-3, Java实现线索化二叉树
文章目录10.1 线索二叉树的定义10.2 二叉树线索化,以及遍历线索二叉树的具体实现10.1 线索二叉树的定义[基本概念]线索, 线索二叉树:对于n个结点的二叉树, 在二叉链表存储结构中有n+1个空链域, 利用这些空链域存放在某种遍历次序下该结点的前驱结点和后继结点的指针, 这些指针称为线索, 加上了线索的二叉树称为线索二叉树.线索化:对一棵二叉树中所有结点的空指针按照某种遍历方法加线索(指定前驱和后继结点)的过程叫做线索化. 根据对二叉树遍历方式的不同, 线索二叉树可以分为前序线索二叉原创 2021-05-10 11:40:53 · 366 阅读 · 0 评论 -
六, 递归以及几个典型的Java递归例子(待补充)
文章目录6.1 什么是递归?6.2 手写递归的三个要素6.2.1 第一要素: 明确你这个函数想要干什么6.2.2 第二要素: 寻找递归结束的条件6.2.3 第三要素: 找出函数的等价关系式(递推式)6.3 栗子的磨练1. 递归打印n次字符串2. 实现n的阶乘3. 数组求和4. 斐波那契数列5.6.1 什么是递归?定义:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。用大白话来讲述递归, 知乎的一位大佬讲的就非常形象:一个小朋友坐原创 2021-05-09 23:43:43 · 879 阅读 · 2 评论 -
十-2, Java实现顺序存储二叉树的遍历
文章目录10.1 顺序存储二叉树定义10.2 顺序存储二叉树遍历的实现10.1 顺序存储二叉树定义从数据存储来看, 数组存储方式和树的存储方式可以相互转换, 即数组可以转换成树, 树也可以转换成数组. 顺序结构存储就是使用数组来存储, 一般使用数组只适合表示完全二叉树, 因为非完全二叉树会有空间的浪费.下图是树和数组对应的关系图用数组顺序存储二叉树, 其显著特征是: (n表示数组的索引值)在数组中index=n的元素对应的父节点为 index=(n-1)/2的元素, 向下取原创 2021-05-07 15:59:27 · 251 阅读 · 1 评论 -
十-1, Java实现简单二叉树(遍历查找和删除)
十, 二叉树10.1 树存在的必要性[数组存储方式的优缺点]优点: 通过下标直接访问目标数据, 速度快. 对于有序数组, 还可使用二分查找提高检索速度缺点: 如果要检索具体某个值, 或者插入值(按一定顺序)会整体移动, 效率较低.[链表存储方式的优缺点]优点:在一定程度上对数组存储方式有所优化。比如插入一个数值节点,只需要将插入节点链接到链表中即可,其删除效率也较高。缺点:在进行检索时,效率仍然较低。比如检索某个值, 需要从头节点开始遍历。从上面数组和链表的特点我们可以知道原创 2021-05-07 12:18:28 · 922 阅读 · 2 评论 -
九, Java实现哈希表(拉链法, 数组+单链表)
九, 哈希表9.1 哈希表的定义和特点散列表(Hash table, 也叫哈希表),是根据关键码 - 值(Key - value)而直接进行访问的数据结构。 也就是说, 它通过把关键码 - 值映射到表中一个位置来访问记录, 以加快查找的速度。这个映射的函数叫做散列函数,存放记录的数组叫做散列表。其实把哈希表看做是字典来理解哈希表就很容易明白了,我们通过关键码即可快速定位关键值。显而易见哈希表有一个很大的优点就是查找数据的速度快。下图就是一个典型的哈希表(数组+链表实现的,使用拉链法解决冲突)原创 2021-05-06 00:05:34 · 765 阅读 · 1 评论 -
八-1, Java实现斐波那契查找算法,一个字,透彻!
文章目录8.4 斐波那契查找[要求有序]8.4.1 斐波那契查找的相关知识点:8.4.2 斐波那契查找算法的思想以及实现步骤8.4 斐波那契查找[要求有序]8.4.1 斐波那契查找的相关知识点:前置知识:黄金比例: 整体与较大部分比值为 1:0.618 或者 1.618 :1斐波那契数(黄金分割数列): 1,1,2,3,5,8,13,21,35…, 随着此数列的递增, 前后两个数的比例会越来越接近0.618.什么是斐波那契数, 以及斐波那契数列的三种实现: Java实现斐波那契数的三种方式原创 2021-05-05 20:15:19 · 1186 阅读 · 1 评论 -
八,Java实现简单的查找算法(顺序, 折半, 差值查找)
文章目录八, 查找算法8.1 顺序查找8.2 二分查找(折半查找)[要求有序]8.2.1 二分查找基本实现8.2.2 二分查找优化实现(查找多个相同的数)8.3 插值查找[要求有序]8.3.1 插值查找的递归实现八, 查找算法在Java中, 我们常用的查找有四种: 顺序查找, 二分(折半)查找, 插值查找, 斐波那契查找(另作一篇文章)8.1 顺序查找适用于存储结构为顺序或链式存储的线性表顺序查找的基本思想:又称为无序查找, 从数据结构的一端开始, 顺序扫描, 依次将扫描到的原创 2021-05-05 15:38:04 · 689 阅读 · 0 评论 -
八-0, Java实现斐波那契数的三种方式(递推, 数组, 递归)
文章目录1.原理和定义2. 递推方式实现斐波那契数列3. 数组方式实现斐波那契数列4. 递归方式实现斐波那契数列1.原理和定义斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”。如下图所示,就是一个斐波那契数列:在数学上,斐波那契数列被以如下递推的方法定义:从斐波那契的递推公式我们可以总结出重要一点:斐波那契数列从第三项开始,每一项都等于前两项之和。2原创 2021-05-03 12:46:35 · 770 阅读 · 1 评论