自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode 热题HOT100 3. 无重复字符的最长子串 4. 寻找两个正序数组的中位数

3. 无重复字符的最长子串链接题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。题解这题在前面 剑指offer专题 已经讲解过了,可参考前面解释的两种方法,动态规划 和 滑动窗口。这里就简单描述一下滑动窗口过程:用两个指针 i 和 j ,和哈希表初始化:i = 0,指向第一个元素,j = -1移动策略:当元素无重复,i 一直向后移动,并将扫描到的元素放入 map 中,同时记录最大值 max = Math.max(max, i - j); 当元素有重复,则改

2022-04-22 10:31:03 1273

原创 剑指 Offer 44. 数字序列中某一位的数字 剑指 Offer 51. 数组中的逆序对

剑指 Offer 44. 数字序列中某一位的数字1、题目数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。2、题解通过观察可以发现以下规律:对于第 n 位对应的数字,我们令这个数字对应的数为 num,然后分三步进行。首先找到这个数字(n位对应的数字)对应的数是几位数,用 digits 表示;然后确定这个数字(n位对应的数字)对应的数的数值

2022-04-20 16:31:50 1404

原创 剑指 Offer 45. 把数组排成最小的数 剑指 Offer 66. 构建乘积数组 剑指 Offer 67. 把字符串转换成整数

剑指 Offer 45. 把数组排成最小的数1、题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。2、题解  此题求拼接起来的最小数字,本质上是一个排序问题。设数组 nums 中任意两数字的字符串为 x 和 y ,则规定 排序判断规则 为:若拼接字符串 x + y > y + x ,则 x “大于” y ;反之,若 x + y < y + x ,则 x “小于” y ;x “小于” yy 代表:排序完成后,数组中 xx 应在

2022-04-19 15:32:21 1262

原创 剑指 Offer 60. n个骰子的点数 剑指 Offer 61. 扑克牌中的顺子

剑指 Offer 60. n个骰子的点数1、题目把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。2、题解动态规划:确定状态定义:dp[i][j] 代表前 i 个骰子的点数和 j 出现的次数概率,并执行状态转移。初始状态;1个骰子的时候,点数和 j 出现的概率都是 1 / 6 ;状态转移方程:dp[i][j] += dp[1][k]

2022-04-18 18:14:50 344

原创 剑指 Offer 59 - II. 队列的最大值 剑指 Offer 59 - I. 滑动窗口的最大值

剑指 Offer 59 - II. 队列的最大值1、题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -12、题解这题需要用到单调递减队列如何更快的找到队列中的最大值?    队列中没必要维护窗口中的所有元素,我们可以在队列中只保留那些可能成为窗口中的最大元素,去掉那些不可能成为窗口中的最大元素。   

2022-04-17 15:10:52 351

原创 剑指 Offer 57 - II. 和为s的连续正数序列 剑指 Offer 62. 圆圈中最后剩下的数字

剑指 Offer 57 - II. 和为s的连续正数序列1、题目输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列2、题解方法一:回溯算法这题乍一看,经典的回溯算法,于是啪啪啪敲出来,结果经典超时打脸。方法二:双指针+滑动窗口设连续正整数序列的左边界 i 和右边界 j ,则可构建滑动窗口从左向右滑动。循环中,每轮判断滑动窗口内元素和与目标值 target 的大小关系,若相等则记录结果,若

2022-04-16 15:27:09 353

原创 剑指 Offer 41. 数据流中的中位数 剑指 Offer 43. 1~n 整数中 1 出现的次数

剑指 Offer 41. 数据流中的中位数1、题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。2、题解一、使用一个 list 集合即可这里直接根据 list 中的元素排序,然后取中间元素即可。二、双堆根据堆的性质,可以判断两个堆的值从下往上递增,即:bigHeap堆底 <= bigHeap堆顶 <= smallHeap 堆顶 <=

2022-04-14 15:28:12 553

原创 剑指 Offer 37. 序列化二叉树 剑指 Offer 38. 字符串的排列

剑指 Offer 37. 序列化二叉树1、题目请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。2、题解这题主要就是一个层序遍历二叉树,掌握了层序二叉树的遍历基本能做出来。维护一个队列即可。序列化 Serialize :借助队列,对二叉树做层序遍历,并将越过叶节点的 null 也打印出来。特例处理: 若 roo

2022-04-13 22:23:25 201

原创 剑指 Offer 16. 数值的整数次方 剑指 Offer 36. 二叉搜索树与双向链表

剑指 Offer 16. 数值的整数次方1、题目实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。2、题解算法流程:当 x = 0 时:直接返回 0 (避免后续 x = 1 / x 操作报错)。初始化 res = 1 ;当 n < 0 时:把问题转化至 n ≥ 0 的范围内,即执行 x = 1 / x ,n = - n ;循环计算:当 n = 0 时跳出;当 n & 1 = 1n&1=1 时:将当前

2022-04-12 22:31:02 475

原创 剑指 Offer 14- I. 剪绳子 剑指 Offer 14- II. 剪绳子 II

剑指 Offer 14- I. 剪绳子1、题目给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。2、题解解题思路一: 动态规划设数组 dp 记录 0 ~ n 剪绳子的最大乘积两层遍历:第一层表示绳子的长度 第二层用来表示第一段减去

2022-04-11 17:01:03 732

原创 剑指 Offer 12. 矩阵中的路径 剑指 Offer 13. 机器人的运动范围

剑指 Offer 12. 矩阵中的路径1、题目给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。2、题解此题可用回溯法来做,深度优先搜索: 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜

2022-04-10 14:37:05 178

原创 剑指 Offer 48. 最长不含重复字符的子字符串 剑指 Offer 49. 丑数

剑指 Offer 48. 最长不含重复字符的子字符串1、题目请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。2、题解动态规划步骤:确定 dp 数组设动态规划列表 dp ,dp[j] 代表以字符 s[j] 为结尾的 “最长不重复子字符串” 的长度。确定递推公式初始化dp[0] = 1; 1 就是质因子3、代码class Solution { public int lengthOfLongestSubstring(String s

2022-04-09 20:15:44 594

原创 剑指 Offer 33. 二叉搜索树的后序遍历序列 剑指 Offer 34. 二叉树中和为某一值的路径

剑指 Offer 33. 二叉搜索树的后序遍历序列1、题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。2、题解后序遍历定义: [ 左子树 | 右子树 | 根节点 ] ,即遍历顺序为 “左、右、根” 。二叉搜索树定义: 左子树中所有节点的值 << 根节点的值;右子树中所有节点的值 > 根节点的值;其左、右子树也分别为二叉搜索树。思路: 找到第一个比根节点的数大的 作为右节

2022-04-08 14:53:51 1155

原创 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 剑指 Offer 68 - II. 二叉树的最近公共祖先

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先1、题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。2、题解最近公共祖先的定义: 设节点 root 为节点 p,q 的某公共祖先,若其左子节点 root.left 和右子节点 root.right 都不是 p,q 的公共祖先,则称 root 是 “最

2022-04-07 23:33:08 119

原创 剑指 Offer 07. 重建二叉树及剑指 Offer 31. 栈的压入、弹出序列

剑指 Offer 07. 重建二叉树1、题目输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。2、解析知识点:前序遍历列表:第一个元素永远是 【根节点 (root)】中序遍历列表:根节点 (root)【左边】的所有元素都在根节点的【左分支】,【右边】的所有元素都在根节点的【右分支】算法思路:通过【前序遍历列表】确定【根节点(root)】将【中序遍历列表】的节点分割成【左分支节点】和【右分支节点】递归寻找【

2022-04-06 20:53:31 96

原创 JVM-类加载与字节码技术

一、类文件结构通过 javac 类名.java 编译 java 文件后,会生成一个 .class 的文件!执行 javac -parameters -d . HellowWorld.java编译后:[root@localhost ~]# od -t xC HelloWorld.class0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 090000020 00 16 00 17 08 00 18 0a 00 19 00 1a 07 00

2022-03-14 12:12:54 292

原创 JVM-垃圾回收

一、如何判断对象可以回收1.1 引用计数法如果一个对象被其他变量所引用,就让对象计数加1,如果引用了两次,计数加2,若某个变量不再引用了,则计数减1.弊端:循环引用问题两个对象的引用计数都是1,不能被垃圾回收,造成内存泄露2.2 可达性分析算法需要确定一系列根对象,根对象是不能被回收的对象。Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着 GC Root对象 为起点的引用链找到该对象,找不到,表示可以回收哪些对象可以作为 GC Roo

2021-12-14 09:18:24 412

原创 JVM内存结构

一、JVM概述1.1 什么是JVM?定义:Java Virtual Machine:Java 程序的运行环境(Java 二进制字节码的运行环境)好处:一次编写,到处运行(Windows,Linux)自动内存管理,垃圾回收功能数组下标越界检查多态1.2 比较JVM、JRE、JDK1.3 JVM内存结构,学习路程...

2021-12-12 15:22:51 516

原创 JVM快速入门

JVM探索请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取,怎么分析Dump文件?知道吗?谈谈JVM中,类加载器你的认识?1、JVM的位置java程序跑在jvm上面,jre-jvm, 在操作系统之上,最底下是硬件系统。2、JVM的体系结构jvm调优说的是“方法区”和“堆“,而”栈“、”本地方法栈“、”程序计数器“不存在垃圾回收一事虚拟机试图使用

2021-12-05 16:45:46 1057

原创 剑指offer-栈与队列题

1、剑指 Offer 09. 用两个栈实现队列题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )详解:执行语句:queue.push(1);queue.push(2);queue.pop(); 注意此时的输出栈的操作queue.push(3);queue.push(4);queue.pop();queue.pop

2021-12-03 14:11:03 107

原创 MySQL索引

一、索引概述  官方定义:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。  左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就

2021-10-24 15:00:07 63

原创 Git使用快速入门及常用命令

一、Git 概述  Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。  Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。1.1 版本控制版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。如:1.2 为什么需要版本控制  有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时

2021-10-20 21:18:11 251

原创 【学习07】MySQL联结查询与组合查询

一、联结查询SQL最强大的功能之一就是能在数据检索查询的执行中联结(join)表。联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的一个极为重要的组成部分。简单地说,联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行1.1 创建联结输入:SELECT vend_name,prod_name,prod_priceFROM vendors,productsWHERE ve

2021-10-20 11:31:20 482

原创 【学习06】MySQL分组查询与子查询

一、分组数据这涉及两个新SELECT语句子句,分别是GROUP BY子句和HAVING子句。表数据如下:1.1 创建分组输入:SELECT vend_id,count(*) AS num_prodsFROM vendorsORDER BY vend_id;输出:分析: 上面的SELECT语句指定了两个列,vend_id包含产品供应商的ID,num_prods为计算字段(用COUNT(*)函数建立)。GROUP BY子句指示MySQL按vend_id排序并分组数据。GROUP BY子

2021-10-19 15:27:50 784

原创 Mabatis 缓存设置(一级缓存、二级缓存)

  MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。一般提到Mabatis缓存的时候,都是指二级缓存。一级缓存(本地缓存)默认会启用。默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启。二级缓存需要手动开启和配置,他是基于namespace级别的缓存。为了提高扩展性。MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存一、一级缓存一级缓存(local cache), 即本地缓

2021-09-29 12:53:53 476

原创 JavaWeb重要知识点(Tomcat、Servlet技术、Cookie技术、Session会话、JSON使用、Ajax请求)

一、Tomcat  Tomcat由Apache提供的一种web服务器,提供对jsp和servlet支持,轻量级的javaweb服务器,当前应用最广。  web资源按实现的技术和呈现的效果不同,又分为静态资源和动态资源两种。静态资源:html、css、js、txt、mp4视频、jpg图片动态资源:jsp页面、servlet程序二、Servlet技术Servlet 是 JavaEE 规范之一。规范就是接口Servlet 就是 JavaWeb 三大组件之一。三大组件为:Servlet 程序、

2021-09-24 16:46:40 249 2

原创 表格型方法Sarsa和Q-Learning算法

一、Q表格我们可以用状态动作价值来表达说在某个状态下,为什么动作 1 会比动作 2 好,因为动作 1 的价值比动作 2 要高,这个价值就叫 Q 函数。如果 Q 表格是一张已经训练好的表格的话,那这一张表格就像是一本生活手册。 我们就知道在熊发怒的时候,装死的价值会高一点。在熊离开的时候,我们可能偷偷逃跑的会比较容易获救。这张表格里面 Q 函数的意义就是我选择了这个动作之后,最后面能不能成功,就是我需要去计算在这个状态下,我选择了这个动作,后续能够一共拿到多少总收益。如果可以预估未来的总收益的大小,我

2021-07-22 21:19:26 1122 1

原创 马尔可夫决策过程(MDP)

强化学习的数学基础是马尔可夫决策过程 (Markov Decision Processes, MDPs)。一个MDP 通常由状态空间、动作空间、状态转移矩阵、奖励函数以及折扣因子等组成。简单地说,强化学习是一个序贯决策过程,它试图找到一个决策规则(即策略)使得系统获得最大的累积奖励值,即获得最大价值。...

2021-07-21 17:30:20 1185

原创 强化学习概述

一、什么是强化学习强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的**环境(environment)**里面去极大化它能获得的奖励。示意图由两部分组成:agent 和 environment。在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个 动作(action),一个决策。然后这个决策会放到环境之中去,环境会根据 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent

2021-07-21 17:27:17 382

原创 机器学习基本概念

一、机器学习简介1.1 机器学习是什么假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对它进行了学习。通俗来说,是按我们已经积累的许多经验,通过对经验的利用,就能对新情况做出有效的决策。1.2 机器学习分类根据数据的组成不同,机器学习可以分为:监督学习无监督学习半监督学习强化学习1.2.1 监督学习输入数据由输入的特征值和目标值组成。根据目标值(输出)是连续还是离散又可分为回归和分类。回归问题例如

2021-07-18 10:16:25 2411 1

原创 Hadoop平台的安装(完全分布式Hadoop 3.1.2)

  由于学校开了门大数据的课程,在做实验的时候踩了许多坑,所以将Hadoop安装过程以及踩坑和如何避免踩坑在这里和大家分享一下。这次Hadoop平台的搭建主要是搭建一个三台服务器的集群,采用完全分布式的方式。看本博客前需要将linux系统在虚拟机上搭建好。一、网络配置注:三台服务器都需要配置网络。(也可以采用克隆的方式,但要记得对其他两台机器的网络信息进行修改)还是建议大家每台都操作一遍,熟悉过程。Host-Only模式  虚拟机会与宿主机的虚拟网卡组成一个局域网,局域网中可使用单独的静态内部IP,

2021-06-24 09:32:13 1450

原创 MySQL笔记(自用)

MySQL中的 ‘+’ 号只表示云算符,做拼接,使用concat(a, b)显示表结构:DESC + 表名

2021-01-13 23:29:16 207

原创 二叉树必备各种递归算法(求树的结点数,高度,叶子结点...)

1、求二叉树中的节点个数递归解法:(1)如果二叉树为空,节点个数为0(2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1int NodeNum(BTNode * root){ if(root== NULL) // 递归出口 return 0; return NodeNum(root->lchild) + NodeNum(root->rchild) + 1;}2、求二叉树的深度递归解法:(1)如果二叉树为空,二叉

2020-11-08 15:25:46 45515 14

原创 C语言常考简单算法题

1、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?#include <stdio.h> int main(){ int i, j, m, n, x; for (i = 1; i < 168 / 2 + 1; i++) { if (168 % i == 0) { j = 168 / i; if ( i > j &&

2020-11-08 14:56:53 2795

原创 队列概述及存储结构(顺序存储,链式存储,循环队列)代码实现

一、队列的基本概念1.1 队列的定义  队列(Queue) 简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队。删除元素称为出队或离队。这和我们日常生活中的排队是一致的,最早排队的也是最早离队的,其操作的特性是先进先出(First In First Out, FIFO),如:队头(Front): 允许删除的一-端,又称队首。队尾(Rear)。: 允许插入的一-端。空队列: 不含任何元素的空表。1.2 队列常见的基本操作Init

2020-07-13 13:59:14 4949

原创 栈的顺序存储结构与链式存储结构及代码实现

一、栈的概念1.1 栈的定义栈(Stack) :是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如图所示:子弹先进后出或后进先出栈的示意图:栈顶(Top): 线性表允许进行插入删除的那一端。栈底(Bottom): 固定的,不允许进行插入和删除的另一端。空栈: 不含任何元素的空表。进栈(压栈或入栈): 栈的插入操作出栈(弹栈): 栈的删除操作1.2 栈的基本操作InitStack(&S): 初始化-一个空栈 S

2020-07-11 13:57:02 3617

原创 线性表的链式存储结构及代码实现(单链表,双链表,循环链表)

  在上一篇博文中介绍了线性表的顺序存储方式,它最大的缺点就是在插入和删除操作时会移动大量的元素,这显然会耗费很多时间。后来人们便想到了用链式存储方式来解决上面这一问题。链式存储线性表时,不需要使用地址连续的存储单元,即不要求逻辑上相邻的元素在物理位置上也相邻,它通过 “链” 建立起数据元素之间的逻辑关系,因此插入和删除操作不需要移动元素,而只需修改指针,但也会失去顺序表可随机存取的优点。一、单链表1.1 单链表的定义  线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素

2020-07-08 16:56:41 3224

原创 线性表概述及其顺序存储结构代码实现

一、线性表的定义  线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当 n 等于 0 时线性表是一个空表。若用L命名线性表,则其一般表示为          L= (a1, a2, a1, … ,ai+l, … ,an)式中,a1是唯一的 “第一个” 数据元素,又称表头元素; an是唯一的 “最后一个” 数据元素,又称表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱。除最后-一个元素外, 每个元素有且仅有一个直接后继。由以上定义可以得出线性表的特点如下,表

2020-07-06 15:29:03 1698

原创 C语言指针,结构体与动态内存分配与释放复习

一、指针1.1 指针的基本介绍指针的重要性:指针是C语言的灵魂。指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。地址:是从内存单元的编号 ,是从0开始的非负整数 ,如:0–FFFFFFFF【4G-1】指针:指针就是地址 ,地址就是指针 。指针变量是存放在内存单元地址的变量, 指针的本质是一个操作受限的非负整数基本概念int i = 0;int *p = &i; //等价于int *p; p = &i;详解这两步操作:(1)p 存放了

2020-07-04 12:07:58 3118

原创 Hadoop之MapReduce应用实例2(分组排序,二次排序)

一、数据集及程序要求  数据集ramen-ratings.txt,包含全世界2580种方便面的品牌、国家/地区、包装类型、评分等内容,使用MapReduce计数并求平均值,输出:每个国家/地区最受欢迎的三大方便面品牌,按评分,去掉重复。所有国家方便面的平均分(即哪国的方便面最好吃)数据获取地址:https://github.com/ordinaryload/Hadoop-tools二、源代码编写2.1 打开IntelliJ IDEA创建Maven项目2.2 pom.xml 文件如下:&lt

2020-06-26 00:31:50 695

spring.zip

Spring必备jar包,

2019-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除