自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 归并排序 java实现

归并排序​​​​​​要将一个数组排序,可以先递归将它分成两半分别排序,然后将结果归并起来。归并性质:任意长度为N的数组排序所需的时间和Nlog(N)成正比;缺点则是它所需要的额外空间和N成正比。实现一:自顶向下(递归,分治)private static Comparable[] aux;//归并所需要的辅助数组 public static void main(Strin...

2019-03-31 22:37:34 195

原创 希尔(shell)排序 java

希尔排序希尔排序:交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序数组排序。思想:使数组中任意间隔为h的元素都是有序的,这样的数组被称为h有序数组。一个h有序数组就是h个互相独立的有序数组编织在一起的数组。不稳定排序public static void main(String[] args){ Integer[] a = {23, 21, 4, 6, 7...

2019-03-31 22:32:01 201

原创 插入排序 java

* 插入排序* 通过构建有序序列,对于未排序数据,在已经排序的序列中从后向前扫描,找到相应的位置并插入。* 步骤:* 1, 从第一个元素开始,该元素可以被认为已经被排序* 2, 取出下一个元素,在已经排序的元素中从后向前扫描* 3, 如果该元素(已经排序的)大于新元素,将该元素移至下一个位置* 4, 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置* 5, 将该元素插入到该位...

2019-03-31 22:24:10 165

原创 选择排序 java实现

选择排序:首先找到数组中最小的那个元素,其次将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它和它自己交换。* 在剩下的元素中找最小的元素,将其与数组中的第二个元素交换,如此往复,直到将整个数组排序。* 不断的选择剩余元素中的最小者 public static void main(String[] args){ Integer[] a = { ...

2019-03-31 22:09:22 87

原创 冒泡排序 java实现

* 原理:比较两个相邻的元素,将值大的元素交换至右端。** 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。** 第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的...

2019-03-31 22:03:28 114

原创 LeetCode 212. 单词搜索II java实现 个人算法之旅

给定一个二维网格board和一个字典中的单词列表words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入: words = ["oath","pea","eat","rain"] and board =[ ['...

2019-03-11 10:45:04 231

原创 LeetCode 208. 实现 Trie (前缀树)

实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app...

2019-03-10 12:07:09 304

原创 字典树(Trie)

1、Trie树的数据结构Trie树,即字典树,又称单词查找数或者键数。是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不限于字符串),所有经常被搜索引擎系统用于文本词频统计。优点:最大限度地减少无谓的字符串比较,查询效率高于哈希表。2、Trie数的核心思想Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。3...

2019-03-10 11:55:06 245

原创 LeetCode 69. x的平方根 java实现 个人算法之旅

实现int sqrt(int x)函数。计算并返回x的平方根,其中x是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题思路1)使用二分查找,通过不断的缩小范围来...

2019-03-10 11:29:48 405

原创 LeetCode 37. 解数独 java实现 个人算法之旅

编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字1-9和字符'.'。 你可以假设给定的数独只有唯一解...

2019-03-10 11:22:23 164

原创 LeetCode 36. 有效的数独 java实现 个人算法之旅

判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。解题思路和N皇后有异曲同工之妙。列、行、3X3矩阵都只能有1~9...

2019-03-10 11:00:31 259

原创 LeetCode 51. N皇后问题 java实现 个人算法之旅

解题思路每摆放一个queen就需要判断,即每一个queen就需要遍历判断是否可以存在。剪枝,回溯,DFS找出列,左斜线,右斜线和n,每一列之间的关系左斜线:列 + 行 = 常数右斜线:行 - 列 + n = 常数(行减去列可能会出现负数,所以加上N)使用3个一维boolean数组来记录列,左斜线,右斜线的关系。class Solution { public...

2019-03-10 10:39:25 569

原创 LeetCode 102. 二叉树的层次遍历 java实现 个人算法之旅

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其层次遍历结果:[[3],[9,20],[15,7]解题思路:层次遍历,优先想到广度优先搜索(BFS)和深度优先...

2019-03-09 21:55:42 517

原创 LeetCode 122。 买卖股票最佳时机 java实现 个人算法之旅

给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:[7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所...

2019-03-09 19:49:58 305

原创 LeetCode 50.x的N次幂 java实现 个人算法之旅

实现pow(x,n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 <x< 10...

2019-03-09 16:47:38 388

原创 递归、分治

递归 - 循环:通过函数体来进行循环举例:1.从前有个⼭山,2.⼭山⾥里里有个庙,3.庙⾥里里有个和尚讲故事:1.从前有个⼭山, 2.⼭山⾥里里有个庙, 3.庙⾥里里有个和尚讲故事: ......递归代码模板Class recursion(level, param1, param2, ...) //递归终止条件 if(le...

2019-03-09 16:02:50 128

原创 LeetCode 235. 二叉搜索树的最近公共祖先 java实现 个人算法之旅

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: ro...

2019-03-08 20:48:35 288

原创 LeetCode 236. 二叉树的最近公共祖先 java实现 个人算法之旅

解题思路:想要找出两个节点的最近祖先节点。树,首先考虑递归遍历。重点递归的返回条件,即return的条件。1,从顶层开始遍历,找到P或q返回,考虑在什么时候返回。即当遍历到p或q节点(他们变成了root节点时)返回root。2,当前的数被全部遍历完毕时,如果p 、q 分别在左子树或者右子树,说明其最近公共祖先节点为最开始的根节点。3,如果p和q都在左边或者右边,则最近公共祖先在左边...

2019-03-08 20:30:27 396

原创 leetcode 98 验证二叉搜索树 java实现 笔记

题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。方法一: /** * Definition for a binary tree node. * public class TreeNode { * int...

2019-03-08 13:06:53 250

原创 java实现二叉树遍历

一、递归实现二叉树遍历1)前序遍历:root ,left,right。class Solution { private List<Integer> list = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { inord...

2019-03-07 23:40:20 158

空空如也

空空如也

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

TA关注的人

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