自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RBreeze的博客

三思而后行。

  • 博客(76)
  • 收藏
  • 关注

原创 冒泡排序(包括两种优化)

说明稳定性:稳定时间复杂度:最好-O(n);最坏O(n^2);平均O(n^2);空间复杂度:O(1)使用场景:数据规模小的场景算法思想:比较相邻的两个元素,将较小的数交换到左端,直到序列有序。实现说明:包含两层循环,每次外层循环冒出最大的一个数到length-1-i的位置,内存循环,每次比较相邻两个数,将较大数换到后面直到length-i-1位置。优化说明:包括两种优化,优化外层...

2018-05-13 12:38:19 276

原创 分层存储开源实现btier源码阅读

1、一篇关于分层存储介绍的博文:Linux 下的两种分层存储方案2、btier github地址:https://github.com/mruijterbtier有两个大的版本1.x和2.x,本文为基于1.x的源码阅读时记录。3、cli处理创建、删除设备流程:4、blocklistblocklist是保存了所有块的信息,仅存于tier0上。4.1数据结构struct blockinfo { unsigned int device; /*哪一层*/ u64 offset

2020-05-17 17:08:18 1106

原创 记导入第三方库Alamofire的坑

按照网上打的操作步骤导入之后,存在No Such Module ‘Alamofire’,解决办法是重新Build。但是根本没用。原因是版本问题。选择一个合适的版本即可。在readme.文件可看到对应的版本情况。...

2019-01-23 11:30:50 696

原创 记udev规则无效问题

失效规则:KERNEL==“md1”,SUBSYSTEM==“block”,ACTION==“change”,RUN+="/home/dhc/raid1.sh changed %k"因为匹配的关键字顺序问题造成。KERNEL==“md1”,ACTION==“change”,SUBSYSTEM==“block”,RUN+="/home/dhc/raid1.sh changed %k"...

2019-01-08 20:10:39 3364

原创 github使用

参考廖雪峰教程 主要是windows上的操作。在其他系统命令一样。github简介git是一个分布式版本控制系统,非常好用。安装github现在已经支持Linux、Unix、Mac和Windows。linux安装mac安装windows安装创建新仓库在windows上我们创建一个空的仓库需要两步:新建一个文件夹和初始化仓库。 初始化仓库命令:git in...

2018-08-15 22:01:11 240

原创 堆排序分析实现

算法思想若升序,建大堆,每次选择堆顶元素即最大的数,和最后一位交换,再缩小堆的范围(避免刚排好的最后一个位置被调回去),对剩下的进行向下调整(此时只有根节点不对,左右子树都满足大堆)。反复进行直到堆的范围为0.则数据就有序了。代码实现思路堆排序的实现首先是需要将数组调整为一个大堆或者小堆,然后就是循环交换和调整堆的过程。因为在建堆和调整堆过程都用到了将数组的某一部分调整为一个堆,所以抽...

2018-08-15 21:17:40 165

原创 希尔排序分析实现

算法思想:希尔排序又叫缩小增量,也是一种插入排序。希尔排序中有一个步长,通过这个步长将数组分化为步长个序列,然后分别对这些序列进行直接插入排序,然后改变步长,重复操作,直到步长为1,而此时数组基本有序,很快。步长的取法一般是开始为(数组长度/2),然后是对步长一直除2直到步长为1。算法运行过程图:代码实现思路:思路1:按照算法思想,有一个循环步长的循环,然后对某个步长划分...

2018-08-14 22:43:59 305

原创 归并排序分析实现

算法思想:对于一个待排序的数组,我们可以将其分成两部分,先对这两部分进行递归的归并排序,然后在将这两部分合并。归并排序算法运行轨迹代码实现思路:思路1:采用自底向上的非递归方式实现。思路2:采用自顶向下的递归方式实现。优化方法:在合并函数中每次都new一个临时temp数组可以通过传递一个临时数组temp来小小的优化一下。在合并前简单的判断nums[mid]和...

2018-08-14 20:37:55 401

原创 数组复制与深拷贝和浅拷贝

深浅拷贝针对如对象、数组之类的复杂类型。 就数组而言。深拷贝拷贝的数组变量和原来的数组变量是指向两块不同的空间,二者的操作互相不影响。int[] a = new int[]{1,2,3,4,5};int[] b = new int[5];for(int i = 0;i < 5;i++){ b[i] = a[i];}浅拷贝拷贝的数组变量和原来的数组变量是...

2018-08-14 19:03:34 925

原创 快速排序

算法思想:快速排序采用了分治的思想,在对数组进行排序时,首先选取数组中的一个元素作为基准元素,然后将数组中所有小于等于基准元素的元素放在基准元素的左边,而大于基准元素的放在基准元素的右边,然后对基准元素的左右两边的序列采用同样的方式对其进行排序。代码实现思路:在代码实现中都是选择第一个元素作为基准元素。思路1:在白话经典算法系列之六 快速排序 快速搞定中提出的是挖坑填数的方法,...

2018-08-14 16:49:32 331

原创 直接插入排序和其优化

综述:插入排序同选择排序一样,将数组分为两个序列,每次从无序序列中拿出第一个元素插入到有序序列中,正常情况是在插入时先找出插入位置,在移动元素,在将元素插入到正确的位置。对于选择排序的优化一种是可以减少查找插入位置的时间,利用二分查找;其实在这里可以将查找和移动插入写在一个循环中,循环时判断并且后移,到正确的位置时在插入元素,同时这里的移动元素和插入操作可以用元素交换来实现。对于合并两个循环和...

2018-08-13 21:43:18 395

原创 选择排序和其简单优化

以将一个数组排序为升序结果为例。综述:选择排序就是在排序时将数组分为一个有序序列和一个无序序列,每次从无序序列中选出最小的数(或者最大的数)放在有序序列的结尾(开头),这个有序序列是位于数组前部分(后部分),而在代码中表现为每次将无序序列中的最小元素(最大元素)和无序序列的第一个元素(最后一个元素)交换,因为有序序列和无序序列尾首相接(首尾相接)。 在上述文字括号中的是这个有序序列在...

2018-08-13 21:35:18 384

原创 jquery练习——购物车

购物车练习总结初学练习,收货颇多。两个方便,一部分是技术知识上的,一部分是开发思路上的。整个练习的业务逻辑包括:1.动态的通过按钮添加商品,商品名价格等随机产生 2.实现全选按钮点击事件(反选取消全选) 3.实现复选框点击事件 4.实现数量加减按钮点击事件 5.实现文本框数量改变事件 6.实现删除操作商品内容包括如下:在开始写的时候并没有做任何分析,仅仅是用一...

2018-08-13 21:12:31 5472 2

原创 LeetCode——第121题:买股票的最佳时机

题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 ...

2018-08-09 14:00:45 425

原创 LeetCode——第53题:最大字段和

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。代码;/** * @作者:dh...

2018-08-08 17:00:52 642

原创 LeetCode——第70题:爬楼梯

题目:假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 步 + 1 步 2. 2 步示例 2:输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 步 + ...

2018-08-08 14:03:03 334

原创 LeetCode——第384题:打乱数组

参考题目:打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。 int[] nums = {1,2,3}; Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。 solution.shuffle();// 重设数组到它的...

2018-08-04 12:01:42 1248

原创 LeetCode——第155题:最小栈

题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack(); minStack.push(-2); minStack....

2018-08-04 09:57:03 1365

原创 LeetCode——第268题:缺失的数字

题目:给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1] 输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1] 输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?代码:/** * @作者:dhc * @创建...

2018-08-04 09:03:07 359

原创 LeetCode——第190题:颠倒二进制位

题目:颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596 输出: 964176192 解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。 进阶: 如果多次调用这个...

2018-08-03 19:31:15 3315

原创 LeetCode——第461题:汉明距离

题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。...

2018-08-01 22:28:55 890

原创 LeetCode——第204题:计数质数

题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。代码...

2018-08-01 22:20:53 261

原创 LeetCode——第191题:位1的个数

参考链接题目:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000000000000000000001011示例 2:输入: 128 输出: 1 解释: 整数 128 的二进制表示为 0000000000000000...

2018-08-01 21:58:33 1219

原创 LeetCode——第118题:帕斯卡三角形(杨辉三角)

题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]代码:import java.util.ArrayList;import ja...

2018-08-01 20:55:50 640

原创 LeetCode——第20题:有效的括号

题目:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1:输入: “()” 输出: true示例 2:输入: “()[]{}” 输出: true示例 3:输入: “(]” ...

2018-08-01 19:35:59 250

原创 LeetCode——第204题:计数质数

题目:统计所有小于非负整数 n 的质数的数量。示例:输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。代码:/** * @作者:dhc * @创建时间:13:39 2018/8/1 * @描述:204.计数质数 */public class TwoHundredAndFour { //埃氏筛法:对...

2018-08-01 14:02:13 254

原创 LeetCode——第326题:3的幂

题目:给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27 输出: true示例 2:输入: 0 输出: false示例 3:输入: 9 输出: true示例 4:输入: 45 输出: false 进阶: 你能不使用循环或者递归来完成本题吗?代码://递归public boolean isPowerOfT...

2018-08-01 09:44:42 820

原创 LeetCode——第412题:Fizz Buzz

题目:写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回: [ “1”, “2”, “Fizz”, “4”, “Buzz”, “Fizz”...

2018-08-01 08:40:29 557

原创 LeetCode——第287题:第一个错误版本

题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测...

2018-07-31 21:22:08 503

原创 LeetCode——第88题:合并两个有序数组

题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入: nums1 = [1,2,3,0,0,0], m = ...

2018-07-31 20:57:34 375

原创 LeetCode——第108题:将有序数组转化为二叉搜索树

题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:0 / \ -3 9 / ...

2018-07-31 20:26:32 989

原创 LeetCode——第198题:验证二叉搜索树

题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3 输出: true 示例 2:输入: 5 / \ 1 4 ...

2018-07-31 18:50:40 1696

原创 LeetCode——第101题:对称二叉树

题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法...

2018-07-31 18:49:16 483

原创 LeetCode——第102题:二叉树的层次遍历

题目:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \ 9 20 / \ 15 7 返回其层次遍历结果:[ [3], [9,20], [15,7] ]代码:package leetCode;...

2018-07-25 20:46:57 1811

原创 LeetCode——第题:求二叉树深度

题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \ 9 20 / \ 15 7 返回它的最大深度 3 。代码:package leetCode;import...

2018-07-25 20:12:54 321

原创 LeetCode——第141题:环形链表

题目:给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?代码:package leetCode;import java.util.HashMap;/** * * @author dhc * */public class OneHundredAndFourtyOne { class ListNode { ...

2018-07-25 19:13:00 298

原创 LeetCode——第21题:合并两个有序链表

题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4代码:package leetCode;import leetCode.TwoHundredAndThirtyFour.List...

2018-07-24 19:28:48 332

原创 LeetCode——第234题:回文链表

题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2 输出: false示例 2:输入: 1->2->2->1 输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?进阶思考:反转再比较,反转用头插法。代码:package leetCode;import java.ut...

2018-07-23 18:36:40 401

原创 LeetCode——第206题:反转链表

题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?代码:package leetCode;import leetCode.Nineteen.ListNode;...

2018-07-23 11:14:55 491

原创 LeetCode——第19题:删除链表的倒数第N个节点

题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?代码:package leetCode;

2018-07-23 10:16:18 205

空空如也

空空如也

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

TA关注的人

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