自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大神,带带我的博客

生活像电影,故事很单调

  • 博客(74)
  • 资源 (15)
  • 收藏
  • 关注

原创 剑指Offer学习-面试题57:和为s的数字

/** * 和为s的数字 * <p> * 设置两个指针,左指针指向数组的开头,右指针指向结尾,由于数组是递增的 * 相加如果大于s,则右指针向左移动, * 小于s,则左指针向右移动 * * @param arr * @return */ public int[] findNumberWithSum(int[] arr, int s) { if (null == arr || arr.

2020-06-11 21:47:34 162

原创 剑指Offer学习-面试题56:数组中数字出现的次数

/** * 数组中数字出现的次数 * <p> * 一个整型数组里除两个数字之外,其他数字都出现了两次,请找出这两个只出现一次的数字 * * @param arr * @return */ public int[] findNumsAppearOnce(int[] arr) { if (null == arr || 0 == arr.length) return null; int a.

2020-06-11 21:26:20 208

原创 剑指Offer学习-面试题55:二叉树的深度

/** * 二叉树的深度 * * @param root * @return */ public int treeDepth(TreeNode root) { if (null == root) return 0; int left = treeDepth(root.left); int right = treeDepth(root.right); return Math.max(le.

2020-06-11 20:39:39 219

原创 剑指Offer学习-面试题54:二叉搜索树的第k大节点

/** * 二叉搜索树的第k大节点 * * @param root * @return */ public TreeNode kthNode(TreeNode root, int k) { int count = 0; TreeNode cur = root; while (cur != null) { TreeNode mostRight = cur.left; .

2020-06-10 22:11:25 135

原创 剑指Offer学习-面试题53:在排序数组中查找数字

/** * 在排序数组中查找数字 * 统计一个数字在排序数组中出现的次数 * * @param arr * @return */ public int getNumberOfK(int[] arr, int k) { if (null == arr || 0 == arr.length) return 0; int first = getFirstIndex(arr, k); int las.

2020-06-10 21:47:57 118

原创 剑指Offer学习-面试题52:两个链表的第一个公共节点

/** * 两个链表的第一个公共节点 * <p> * 先计算两个链表的长度,让长的链表先走两个链表的差值,然后一起走,比较相等 * * @param l1 * @param l2 * @return */ public ListNode findFirstCommonNode(ListNode l1, ListNode l2) { if (null == l1 || null == l2) .

2020-06-10 21:23:24 136

原创 剑指Offer学习-面试题51:数组中的逆序对

int res = 0; /** * 数组中的逆序对 * <p> * 归并排序求逆序对 * * @param arr * @return */ public int inversePairs(int[] arr) { if (null == arr || 0 == arr.length) return 0; mergeSort(arr, 0, arr.length - 1).

2020-06-10 21:12:35 136

原创 剑指Offer学习-面试题50:第一次只出现一次的字符

/** * 第一次只出现一次的字符 * * @param str * @return */ public char firstNotRepeating(String str) { if (null == str || 0 == str.length()) return ' '; int[] p = new int[26]; Arrays.fill(p, -1); for (int i .

2020-06-09 21:32:55 111

原创 剑指Offer学习-面试题49:丑数

/** * 丑数 * 我们把只包含因子2,3,5的数称作丑数,从小到大顺序求第number个丑数 * <p> * 三指针 * * @param number * @return */ public int getUglyNumber(int number) { if (number < 0) return 0; int a = 1; int b = 1;.

2020-06-09 21:18:43 92

原创 剑指Offer学习-面试题48:最长不含重复字符的子字符串

/** * 最长不含重复字符的子字符串 * * @param str * @return */ public int longestSubstringWithoutDuplication(String str) { if (null == str || 0 == str.length()) return 0; //记录字母最后一次出现的下标 int[] position = new int[26];.

2020-06-09 20:59:41 152

原创 剑指Offer学习-面试题47:礼物的最大价值

/** * 礼物的最大价值 * <p> * f(i,j)=max(f(i-1,j),f(i,j-1))+arr[i][j] * * @param arr * @return */ public static int getMaxValue_solution(int[][] arr) { if (null == arr || 0 == arr.length) return 0; int .

2020-06-09 20:37:19 111

原创 剑指Offer学习-面试题46:把数字翻译成字符串

/** * 把数字翻译成字符串,计算有多少种翻译方法 * * @param n * @return */ public int getTranslationCount(int n) { if (n < 10) return 1; char[] arr = String.valueOf(n).toCharArray(); int[] dp = new int[arr.length]; .

2020-06-09 20:19:14 123

原创 剑指Offer学习-面试题45:把数组排成最小的数

/** * 把数组排成最小的数 * * @param arr * @return */ public String printMinNumber(String[] arr) { if (null == arr || 0 == arr.length) return ""; Arrays.sort(arr, (a, b) -> (a + b).compareTo(b + a)); return St.

2020-06-08 20:50:59 100

原创 剑指Offer学习-面试题44:数字序列中某一位的数字

/** * 数字序列中某一位的数字 * * @param index * @return */ public int digitAtIndex(int index) { if (index < 0) return -1; int digits = 1; while (true) { int numbers = countOfIntegers(digits); .

2020-06-08 20:33:17 126

原创 剑指Offer学习-面试题42:连续子数组的最大和

/** * 连续子数组的最大和 * * @param arr * @return */ public int findGreatestSumOfSubArray(int[] arr) { if (null == arr || 0 == arr.length) return 0; int max = Integer.MIN_VALUE; int cur = 0; for (int i :.

2020-06-05 21:45:17 121

原创 剑指Offer学习-面试题41:数据流中的中位数

public static void main(String[] args) { while (true) { Scanner input = new Scanner(System.in); System.out.println("请输入一个正整数:"); int cur = input.nextInt(); System.out.println("此时的中位数是:" + getMid(cur).

2020-06-05 21:40:59 124

原创 剑指Offer学习-面试题40:最小的k个数

/** * 最小的k个数 * <p> * 利用堆 * * @param arr * @param k * @return */ public int[] getLeastNumber(int[] arr, int k) { if (null == arr || 0 == arr.length || k >= arr.length) return arr; Priorit.

2020-06-05 20:56:05 109

原创 剑指Offer学习-面试题39:数组中超过一半的数字

/** * 数组中超过一半的数字 * <p> * 遇到相等的数count加1,不相等就减1,如果存在一个数在数组中占一半,则遍历完当前值必定是这个数 * * @param arr * @return */ public int moreThanHaIfNum(int[] arr) { if (null == arr || 0 == arr.length) return -1; int .

2020-06-05 20:13:37 128

原创 剑指Offer学习-面试题38:字符串的排列

/** * 字符串的排列 * * @param s */ public void permutation(String s) { char[] arr = s.toCharArray(); process(arr, 0); } /** * 每次让首字母和后面的交换 * * @param arr * @param index */ private voi.

2020-06-04 22:25:15 139

原创 剑指Offer学习-面试题37:序列化与反序列化二叉树

/** * 反序列化二叉树 * * @param s */ public TreeNode deSerialize(String s) { if (s.charAt(index) != '$') { TreeNode root = new TreeNode(s.charAt(index)); index++; root.left = deSerialize(s); .

2020-06-04 21:59:01 183

原创 剑指Offer学习-面试题36:二叉搜索树与双向链表

/** * 二叉搜索树与双向链表 * * @param root * @return */ public BinaryTreeNode convert(BinaryTreeNode root) { BinaryTreeNode last = null; convertNode(root, last); BinaryTreeNode head = last; while (head !..

2020-06-04 21:36:23 96

原创 剑指Offer学习-面试题35:复杂链表的复制

/** * 复杂链表的复制 * * @param root * @return */ public ComplexListNode clone(ComplexListNode root) { //复制节点并拼接到后面 cloneNodes(root); //复制sibling节点 connectSibNode(root); //断开节点 ComplexL.

2020-06-04 21:16:59 139

原创 剑指Offer学习-面试题34:二叉树中和为某一值的路径

List<Integer> list = new ArrayList<>(); /** * 二叉树中和为某一值的路径 * <p> * 前序遍历二叉树,list保存节点,遇到没有孩子节点并且等于k,则打印 * * @param root * @param k */ public void findPath(TreeNode root, int k) { if (null.

2020-05-30 18:00:49 161

原创 剑指Offer学习-面试题33:二叉搜索树的后序遍历序列

/** * 二叉搜索树的后序遍历序列 * * @return */ public boolean verifySquenceOfBST(int[] arr) { if (null == arr || arr.length < 2) return true; return is(0, arr.length - 1, arr); } private static boolean is(int left, i.

2020-05-29 22:24:09 213 1

原创 剑指Offer学习-面试题32:从上到下打印二叉树(二叉树的层次遍历)

/** * 从上到下打印二叉树(二叉树的层次遍历) * * @param root */ public void printFromTopToBottom(TreeNode root) { if (null == root) return; Queue<TreeNode> queue = new LinkedBlockingQueue<>(); queue.add(root); .

2020-05-29 21:46:04 148

原创 剑指Offer学习-面试题31:栈的压入,弹出序列

/** * 栈的压入,弹出序列 * 设置一个辅助栈,依次把弹出序列压入辅助栈,如果辅助栈顶元素和原始栈栈顶元素相等,则都弹出 * 最后栈为空就说明弹出序列是栈的压入序列 * * @param pushOrder * @param popOrder * @return */ public boolean isPopOrder(int[] pushOrder, int[] popOrder) { if (n.

2020-05-29 21:39:49 119

原创 剑指Offer学习-面试题30:包含min函数的栈

/** * 包含min函数的栈 */ class MinStack { Stack<Integer> data_stack = null; Stack<Integer> min_stack = null; public MinStack() { data_stack = new Stack<>(); min_stack = new Stack&..

2020-05-29 21:17:58 109

原创 剑指Offer学习-面试题29:顺时针打印矩阵

/** * 顺时针打印矩阵 * * @param arr */ public void printMatrixClockwisely(int[][] arr) { if (null == arr || 0 == arr.length) return; int x = arr.length; int y = arr[0].length; int start = 0; while .

2020-05-28 22:51:40 104

原创 剑指Offer学习-面试题28:对称的二叉树

/** * 对称的二叉树 * <p> * 只需要判断左子树是否和右子树相等就行 * * @param root * @return */ public boolean isSymmetrical(TreeNode root) { return isSymmetrical(root, root); } /** * 判断左子树是否和右子树相等 * * @pa.

2020-05-28 22:04:29 109

原创 剑指Offer学习-面试题27:二叉树的镜像

/** * 二叉树的镜像 * <p> * 如果一个节点左右节点都不为空,则交换左右节点 * * @param root */ public static void mirrorRecursively(TreeNode root) { if (null == root) return; TreeNode left = root.left; TreeNode right = root.

2020-05-28 21:53:47 109

原创 剑指Offer学习-面试题26:树的子结构

/** * 树的子结构 * * @param a * @param b * @return */ public boolean hasSubtree(TreeNode a, TreeNode b) { boolean res = false; if (a != null && b != null) { if (Objects.equals(a.val, b.val)).

2020-05-28 21:38:43 93

原创 剑指Offer学习-面试题25:合并两个排序的链表

/** * 合并两个排序的链表 * 这里我选择让所有的节点往a链表合并 * 设置一个前驱节点,当a小于cur时,cur直接下一个 * 当a不小于cur时,先记录b的下一个节点next,然后把pre的下一个节点指向b,然后把pre的下一个下一个节点指向cur,最后把next赋值给b * * @param a * @param b * @return */ public static ListNode merge.

2020-05-28 21:16:05 130

原创 剑指Offer学习-面试题24:反转链表

/** * 反转链表 * * @param head * @return */ public ListNode reverseListNode(ListNode head) { if (null == head) { return null; } ListNode res = null; ListNode cur = head; while (c.

2020-05-27 22:45:09 117

原创 剑指Offer学习-面试题23:链表中环的入口节点

/** * 链表中环的入口节点 * 1->2->3->4->5->6->3 * 设置快慢两个指针,从头节点开始出发,快指针每次走两步,慢指针每次走一步,直到相遇或者快指针到空节点退出。 * 然后设置快指针为头节点,和慢指针每次走一步,相遇即环的入口 * * @param head * @return */ public ListNode meetingNode(ListNode he.

2020-05-27 22:30:03 135

原创 剑指Offer学习-面试题22:链表中倒数第K个节点

/** * 链表中倒数第K个节点 * <p> * 遍历二次的方法:先遍历一次计算链表的长度len,在遍历一次找到len-k * 遍历一次的方法:设置快慢两个指针,让快指针先走k步,然后慢指针从头开始,同时向前走,最后快指针为空时,慢指针就是目标节点 * * @param head * @param k * @return */ public ListNode findKthToTail(List..

2020-05-27 21:57:42 135

原创 剑指Offer学习-面试题21:调整数值顺序使奇数位于偶数前面

/** * 调整数值顺序使奇数位于偶数前面 * * @param arr */ public void reorderOddEven(int[] arr) { if (null == arr || arr.length < 2) { return; } int left = 0; int right = arr.length; while (lef.

2020-05-27 21:38:42 112

原创 剑指Offer学习-面试题20:表示数值的字符串

/** * 表示数值的字符串 * <p> * 表示数值的字符串遵循A[.[B]][e|EC]或者.B[e|EC] * A为数值的整数部分 * B为数值的小数部分 * C为数值的指数部分 * <p> * 在小数里面可能没有整数部分 如.123 * * @param s * @return */ public boolean isNumeric(String .

2020-05-27 21:20:49 207

原创 剑指Offer学习-面试题19:正则表达式匹配

/** * 正则表达式匹配 * <p> * .表示任意一个字符 * *表示它前面的字符可以出现任意次 * * @param s * @param pattern * @return */ public boolean match(String s, String pattern) { if (null == s || null == pattern) { r.

2020-05-27 20:31:54 190

原创 剑指Offer学习-面试题18:删除链表的节点

/** * 删除链表的节点 * 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)的时间内删除该节点 * * @param node * @return */ public ListNode deleteNode(ListNode head, ListNode node) { if (null == head || null == node) { return null; ..

2020-05-26 22:28:20 137

原创 剑指Offer学习-面试题17:打印从1到最大的n位数

/** * 打印从1到最大的n位数 * * @param n */ public void print1ToMaxOfNDigits(int n) { char[] number = new char[n]; for (int i = 0; i < number.length; i++) { number[i] = '0'; } for (int i = n - 1.

2020-05-26 22:06:53 151

Sharding-JDBC分布式事务应用.pdf

Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

2019-12-17

tomcat日志log4j配置的jar

tomcat日志log4j配置的jar,tomcat-juli-adapters,tomcat-juli,log4j-1.2.17

2018-09-17

visualvm中文版

visualvm,java jvm监控工具,可远程调试程序,idea下载-visualvm-launcher插件容易使用

2018-09-08

lts-admin分布式作业调度

light-task-scheduler (LTS) 国内开源的分布式作业调度系统。主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务

2018-08-24

会计考试视频

4美国注册管理会计师CMA,附带解析资料文档,好东西一起分享

2018-06-15

电商项目功能概要设计

概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。

2018-04-09

C语言终极面试宝典 -自己整理

C语言终极面试宝典。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

2018-04-09

Spark的配置优化

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载

2018-03-24

java并发整理

每个程序都至少拥有一个线程-即作为Java虚拟机(JVM)启动参数运行在主类main方法的线程。在Java虚拟机初始化过程中也可能启动其他的后台线程。这种线程的数目和种类因JVM的实现而异。然而所有用户级线程都是显式被构造并在主线程或者是其他用户线程中被启动

2018-03-24

dubbo-admin-2.5.4.war

Dubbo是[1] 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [2] Spring框架无缝集成

2018-03-23

从Paxos到Zookeeper分布式一致性原理与实践

Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。这个算法被认为是类似算法中最有效的

2018-03-23

spark Core RDD持久化详解

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

2018-03-23

空空如也

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

TA关注的人

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