自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

universe_ant的博客

努力努力再努力

  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 【LeetCode】最短子数组之和(Minimum size subarray sum)

Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead.For example, given the array [2,3,1,2

2017-06-28 20:51:21 1545

原创 剑指Offer——n个骰子的点数

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。解法一:基于递归求骰子的点数,时间效率不够高现在我们考虑如何统计每一个点数出现的次数。要想求出n个骰子的点数和,可以先把n个骰子分为两堆:第一堆只有1个,另一个有n-1个。单独的那一个有可能出现从1到6的点数。我们需要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把

2017-06-22 20:48:23 493

原创 机器人寻路

题目描述:将机器人放在一个m×n的矩阵的左上角,机器人每次只能向右或者向下走一步,现在机器人向走到右下角,请问有多少种可能的走法?思路分析:这是典型的动态规划的问题,指定任意一个格子,它可以向右或者向下移动一格,所以动态方程很明显是:res[i][j] = res[i-1][j] + res[i][j-1]。另外对于最上面一行,由于只能由机器人往右走到达,所以第一行的每

2017-06-22 12:35:00 1095

转载 剑指Offer——二叉搜索树转换为双向链表

分析问题:首先要明白二叉搜索树也是一种排序的数据结构,它的中序遍历就是一个不递减的顺序排列。所以如果要转换成一个排好序的双向链表,那么仅需要改变原来指向左子节点和右子节点的指针,让它们分别指向前节点和后节点即可,如图所示:调整指针:原先指向左子节点的指针调整为链表中指向前一个节点的指针;原先指向右子节点的指针调整为链表中指向后一个节点的指针。如何调整:考虑根节点和左

2017-06-20 20:35:11 341

原创 剑指Offer——在O(1)时间内删除表节点

题目描述:给定单向列表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。解题思路:一般单向链表删除节点,就是从头遍历,找到这个节点,指向这个节点之后的节点,就算是删除了这个节点。这种算法的复杂度为O(n)。题目要求在O(1)时间内完成,所以应该避免遍历。我们遍历的目的是为了找到这个节点前面的那个节点,所以我们可以采用下面的方法。将待删除节点的下一个节

2017-06-20 01:04:22 302

原创 MySQL的复制流程

基本的实现依靠3个线程:主服务器:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从服务器:io线程——在使用start slave之后,负责从master上拉取binlog内容,放进自己的relay log中;从服务器:sql执行线程——执行relay log中的语句。工作原理并不复杂。复制是MySQL数据库提供的一种高可用、

2017-06-19 09:58:06 409

转载 网易笔试题:男女小孩站队问题

题目描述:幼儿园有n个小朋友排为一个队伍,男生用“B”表示,女生用“G”表示。当男女同挨着时就会发生矛盾。需要对所排的队伍进行调整,每次调整只能让相邻的小朋友交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少。例如:GGBBG->GGBGB->GGGBB,这样就能使之前的两处男女相邻变为一处男女相邻,需要调整队形两次。程序输入:输入一个数据包括一个

2017-06-19 00:43:07 1699

转载 【Leetcode】Decode Ways 解码方式

题目:A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total n

2017-06-15 23:19:02 472

转载 【Leetcode】从右边看二叉树

原题出自LeetCode:Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:Given the following binary

2017-06-15 12:57:53 3220

转载 剑指Offer——丑数

题目:丑数我们把只包含因子2,3,5的数称为丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如,6、8都是丑数,但14不是,因为它含有因子7。习惯上我们把1当作第一个丑数。思路:根据丑数的定义,丑数应该是另一个丑数乘以2、3或5的结果。因此我们可以创建一个数组,里面的数字是排序好的丑数,每一个丑数都是前面的丑数乘以2、3或5得到的。这种思路的

2017-06-15 12:04:01 329

转载 剑指Offer——二叉树中和为某一值的路径

题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的所有的节点形成一条路径。输入如下图的二叉树和整数22,则打印出两条路径,第一条路径包含节点10,12,第二条路径包含的节点为10,5,7。一般的数据结构和算法的教材都没有介绍树的路径,因此对很多人而言,这是一个新概念,也就很难一下子想出完整的解题

2017-06-15 11:00:25 363

原创 【Java实现】判断一棵树是否为BST,一棵树是否为完全二叉树

给定一个二叉树,判断它是不是二叉搜索树。思路:对于一棵二叉树,最简单的方法就是中序遍历,看是不是一个递增数列,如果是,则是一棵二叉搜索树,如果不是,则不是二叉搜索树。在这里用一个lastVisit去记录上一次搜索的节点。这个过程就是先找到最左下角的节点,更新lastVisit为这个节点的值,然后按照中序遍历依次更新即可。代码:class Node { int data; Node

2017-06-15 01:30:39 6014

转载 剑指Offer——计算1至n中数字x出现的次数

一、1的数目编程之美上给出的规律:1. 如果第i位(自左至右,从1开始标号)上的数字为0,则第i位可能出现1的次数由更高位决定(若没有高位,视高位为0),等于更高位数字乘以当前位数的权重10^(i-1)。2. 如果第i位上的数字为1,则第i位上可能出现1的次数不仅受更高位影响,还受低位影响(若没有低位,视低位为0),等于更高位数字乘以当前位数的权重10^(i-1) + (低位数字+1)

2017-06-14 22:53:22 794

转载 广度优先搜索和深度优先搜索

广度优先搜索广度优先搜索(BFS),可以被形象地描述为“浅尝辄止”,具体一点就是每个顶点只访问它的邻接节点(如果它的邻接节点没有被访问)并且记录这个邻接节点,当访问完它的邻接节点之后就结束这个顶点的访问。广度优先用到了“先进先出”队列,通过这个队列来存储第一次发现的节点,以便下一次的处理;而对于再次发现的节点,我们不予理会——不放入队列,因为再次发现的节点:无非是已经处理完的了

2017-06-13 00:48:55 455

原创 大疆笔试题目:长度为n的方格,刷3种颜色,相邻方格颜色不同,首尾颜色不同,共多少种涂色方式

题目描述:长度为n的方格,刷3种颜色的颜料,相邻的方格颜料颜色不能相同,且首尾方格颜色不能相同。每个方格必须涂色。计算一共有多少种涂色方式。题目分析:当n==1时,共3种方案,即A1 = 3;当n==2时,有6种方案(A(3, 2) = 6),即A2 = 6;当n==3时,有6种方案(A(3, 3) = 6),即A3 = 6;An = 2×A(n-2) + A(n-

2017-06-11 10:23:20 7947

原创 求二叉树的节点个数、叶子节点个数、第k层的节点个数

class BinaryTreeNode { int val; BinaryTreeNode left = null; BinaryTreeNode right = null;}public class NodesStatistics { /** * 求二叉树的节点个数 * (1)如果二叉树为空,节点个数为0; * (2)如果二叉树不为空,二叉树节点个数 = 左子节点个数

2017-06-10 16:54:54 4719 2

原创 大端和小端

对于大端和小端的概念一直是看了又忘,忘了又看,今天在这里总结一下。大端和小端,如果换一种叫法可能会更好理解,那就是:高尾端和低尾端,举个例子:高尾端和低尾端更加通俗易懂。高尾端对应大端,低尾端对应小端。高尾端(大端)就是指尾部在高地址处;低尾端(小端)就是指尾部在低地址处。

2017-06-10 16:38:54 455

原创 归并排序的Java实现

题目:对于一个int数组,请编写一个归并排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。算法思路:先用递归方法,默认排序方法为2路归并排序。看下图应该能立即理解:先使每个子序列有序,再将两个已经排序的序列合并成一个序列的操作。若将两个已经排序的有序表合并成一个有序表,称为二路归并。public cla

2017-06-09 11:39:56 348

原创 数组中的逆序对数

逆序对定义:在一个数组a[]中,i和j分别为数组的下标,其中i a[j],则a[i]和a[j]是一对逆序对。思路:利用归并排序的思想,先求前面一半数组的逆序数,再求后面一半数组的逆序数,然后求前面一半数组比后面一半数组中大的数的个数(也就是逆序数),这三个过程加起来就是整体的逆序数目了。代码:public class Solution { public int inv

2017-06-09 11:09:37 484

转载 求两个排序数组的中位数

题目:给定两个排序数组,求两个排序数组的中位数,要求时间复杂度为O(log(m+n))。举例:Example 1:nums1 = [1, 3]nums2 = [2]The median is 2.0Example 2:nums1 = [1, 2]nums2 = [3, 4]The median is (2 + 3)/2 = 2.5

2017-06-09 09:52:57 679

原创 字符串转换为数字-Java版

package po.ag;/** * 1.首先判断字符串是否为空,若为空,返回0 * 2.考虑前面的是否是空格,使用trim()去掉,然后判断长度是否为0,若是,返回0 * 3.判断第一个字符是不是+或者-,设置变量sign记录 * 4.循环取得字符串的数字,考虑字符串中有非数字,遇到就退出,保留前面的数字 * 5.考虑溢出的情况,溢出返回Integer的最大值或最小值 */pu

2017-06-01 02:24:27 4268

原创 大数相加-Java版

package po.ag;public class BigIntegerAdd { /** * 超大数相加 * @param num1 * @param num2 * @return */ public static String bigNumerSum(String num1, String num2) { char sign = '+'; char sig

2017-06-01 02:14:51 560

Spring RESTful简单实例

利用Spring对RESTful Web Service进行简单的实现demo。

2016-08-13

空空如也

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

TA关注的人

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