自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RowandJJ

阿里巴巴资深开发工程师

  • 博客(262)
  • 资源 (7)
  • 收藏
  • 关注

原创 java自动装箱与拆箱

基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是J2SE 5.0提供的新功能,跟泛型、变长参数等一样,这也是一颗“语法糖”,之前介绍jvm早期优化的时候说过,语法糖对运行期的代码没有任何影响,其目的仅仅是方便程序员使用,所有语法糖编译后都将会还原成基础语法。这次介绍的自动装箱和拆箱也不例外。看下头的例子:public class Demo{

2014-08-02 20:16:05 1891

原创 字符串的排列

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA

2014-08-02 17:40:15 1283

原创 包含min方法的栈

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(1接下来有n行,每行开始有一个字母Ci。Ci=’s’时,接下有一个数字k,代表将k压入栈。Ci=’o’时,弹出栈顶元素。输出:对应每个测试案例中的

2014-08-02 15:16:15 1336

原创 顺时针打印矩阵

题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行包括两个整数m和n(1接下来的m行

2014-08-02 13:43:34 1463

原创 从上到下遍历二叉树

思路:即二叉树的层序遍历。可以使用一个辅助队列,首先将二叉树的根节点入队,然后打印根结点的值,接着判断根结点是否有左右孩子,如果有,将左右孩子入队。如此循环直到队列为空。代码:/*从上到下遍历二叉树by Rowandjj2014/8/1*/#includeusing namespace std;typedef struct _BNODE_{ i

2014-08-01 19:31:50 1715

原创 二叉树镜像

题目描述:输入一个二叉树,输出其镜像。九度OJ的测试很蛋疼啊~这里,我先写一个求二叉树镜像的代码,使用自己的测试代码:思路很简单:先判断是否左右孩子都为空,如果不是,则交换,然后递归左右子树。其实是先序遍历。/*二叉树镜像by Rowandjj2014/8/1*/#includeusing namespace std;typedef str

2014-08-01 17:32:03 1308

原创 树的子结构

题目描述:输入两颗二叉树A,B,判断B是不是A的子结构。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行一个整数n,m(1输出:对应每个测试案例,若B是A的子树输出”YES”(不包含引号)。否则,输出“NO”(不包含引号)。样例输入:7 38 8 7 9 2 4 72

2014-08-01 14:31:03 1030

原创 调整数组顺序使得奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。代码:/*调整数组顺序使得奇数位于偶数前面by Rowandjj2014/8/1*/#include#includeusing namespace std;//高效解法,但会调整后的数组元素相对顺序会发生改变void func(int *

2014-08-01 12:58:47 1152

原创 反转链表

题目描述:输入一个链表,反转链表后,输出链表的所有元素。(hint : 请务必使用链表)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(0输入的第二行包含n个整数t(0输出:对应每个测试案例,以此输出链表反转后的元素,如没有元素则输出NULL。样例输入:

2014-07-31 19:25:42 1157

原创 链表倒数第k个结点、链表中间节点、链表是否有环

题目描述:输入一个链表,输出该链表中倒数第k个结点。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和k(0输入的第二行包括n个数t(1输出:对应每个测试案例,若有结果,输出相应的查找结果。否则,输出NULL。样例输入:

2014-07-31 16:11:38 1430

原创 【安卓笔记】抽屉式布局----DrawerLayout

效果如下:DrawerLayout来自support.v4包,所以不用考虑兼容性问题。其次,这种布局类似风靡一时的侧滑菜单,但是比侧滑菜单轻巧许多。下面介绍这种布局的使用方式。1.在你的项目中导入support.v4包。2.编辑一个布局,根节点为android.support.v4.widget.DrawerLayout,此节点下只允许有两个子节点,第一个为

2014-07-27 15:29:37 5001 4

原创 折半插入排序

之间介绍插入排序时漏掉一种插入方式,那就是折半插入。这种方式是采用二分查找法去查找插入点,可以减少元素比较次数,但是并不能减少移动次数,复杂度跟直接插入一样,都为O(n^2).直接上代码://二分插入排序void binary_insert_sort(int arr[],int len){ if(arr == NULL || len <= 1) { return; }

2014-07-27 11:27:28 1641

原创 【安卓笔记】仿乐安全首页动态效果

先看效果:布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout

2014-07-26 21:13:39 2571

原创 【安卓笔记】扁平化的ProgressBar-----ProgressWheel

ProgressWheel是github上一个开源的项目,为开发者提供一个扁平化的ProgressBar,并可以对其进行深度定制。效果如下:下面介绍使用方式:1.下面是ProgressWheel源码,拷到项目下。package com.example.view;import android.content.Context;import android.conte

2014-07-26 19:05:32 4207

原创 数值的整数次方

题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。输出:对应每个测试案例,

2014-07-26 17:20:20 1190

原创 【安卓笔记】仿猎豹清理大师波浪效果

先来看效果:实现方式----->自定义控件核心代码:package com.example.wavedemo1;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;i

2014-07-26 13:16:44 3983 2

原创 【安卓笔记】快速开发设置界面-----PreferenceActivity

通常app都会有一个设置界面,如下:通常做法是自己定义布局,然后在代码里面添加响应函数,并将结果保存到Sharedpreferences中。android给我们提供了PreferenceActivity来简化开发设置界面。你只需这样做:1.创建一个类继承PreferenceActivity,并导入设置界面布局:package com.exam

2014-07-25 22:37:52 3380

原创 打印从1到最大的n位数

题目描述:给定一个数字N,打印从1到最大的N位数。输入:每个输入文件仅包含一组测试样例。对于每个测试案例,输入一个数字N(1输出:对应每个测试案例,依次打印从1到最大的N位数。样例输入:1样例输出:123456789方案1:void func(int

2014-07-25 17:07:37 1226

原创 在O(1)时间内删除单向链表结点

原理:1.若待删结点在单链表中间,则获取结点下一个结点的值,并复制给待删结点,然后删除待删结点的下一个结点。2.若待删结点在单链表尾部,则顺序遍历单链表,删除。3.若链表只有一个结点,正是待删结点,则删除之,并修改相关指针。核心代码://在O(1)时间删除结点。注:必须保证pDel为链表中的结点void DeleteNode(List *lis

2014-07-25 11:41:16 1619

原创 二进制中1的个数(2)

规律总结:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中最右边的一个1变为0.题目1:用一条语句判断一个整数是不是2的整数次方。解决思路:如果一个整数是2的整数次方,那么二进制表示中只有一位是1。将这个数减去1之后再与本身,结果为0则表示这个整数位2的整数次方。bool func(int n){

2014-07-24 16:25:42 1264

原创 二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。。n保证是int范围内的一个整数。输出:对应每个测试案例,输出一个整数,代表输入的那个数中1的个数。样例输

2014-07-24 16:09:40 1154

原创 斐波那契数列

递归算法是不可取的,因为效率很低,而且还有栈溢出的风险。应该使用如下的迭代解法:int Fibonacci(unsigned int n){ if(n <= 0) { return 0; } if(n == 1) { return 1; } int i = 0,j = 1,m; unsigned int k; for(k = 2; k <=

2014-07-24 12:04:02 1340

原创 归并排序

归并排序还是比较好理解的。归并的含义是将两个或者两个以上的有序表组合成一个新的有序表。具体方式是:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到若干长度为2或者1的有序子序列,再两两归并。。。直至得到一个长度为n的有序序列为止,这就称之为2路归并排序。复杂度:归并排序的最好最坏和平均时间复杂度都是O(n*logn),但是需要

2014-07-24 10:51:06 1546

原创 堆排序

二叉堆:二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆堆排序: 由二叉堆的定义可知,堆顶元素(即

2014-07-23 22:08:45 1373

原创 【安卓笔记】检测服务是否运行

/** * 判断服务是否后台运行 * * @param context * Context * @param className * 判断的服务名字 * @return true 在运行 false 不在运行 */ public static boolean isServiceRun(Context mContext,

2014-07-22 23:46:14 1571

原创 旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数,其中每个整数a的范围是(1输出:对应每个

2014-07-22 19:00:22 1036

原创 【剑指offer】员工年龄排序

典型的以空间换时间问题,思路很重要!/*员工年龄排序 员工可能有几万名,要求时间复杂度为O(n) 思路:员工的年龄必然在一个范围内,比如0-99,那么我们建立一个大小为100的辅助数组,然后遍历 员工年龄,取到一个年龄就将该年龄对应数组位置的值加1,最终数组中便保存了不同年龄的员工的个数 最后,打印数组即可。 by Rowandjj2014/7/22*/#includ

2014-07-22 15:50:24 1364

原创 快速排序

原理:基本思想:1.从待排序列中任选一个元素作为轴点;2.将序列中比轴点的值小的放到轴点左边,比轴点的值大的放到轴点右边;3.以轴为分界线,分别对轴左边和右边部分递归进行1、2操作。平均时间复杂度     尽管快速排序的最坏时间为O(n2),但就平均性能而言,它是基于关键字比较的内部排序算法中速度最快者,快速排序亦因此而得名。它的平均时间复杂

2014-07-22 14:27:31 1613

原创 【安卓笔记】单机版手机归属地查询

既然是单机版,那么必然是查询本地数据库了,所以我们得准备一个离线数据库文件(下载地址:http://download.csdn.net/detail/rowandjj/7660979).步骤:1.创建一个工具类打开数据库:package cn.edu.chd.mobilesafe.db.dao;import android.database.sqlite.SQLiteData

2014-07-21 22:22:46 1663 3

原创 两个队列实现栈

原理:假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶,这时候可以考虑用空队列Q2,将a,b依次从Q1中出队,而后进入队列Q2,将Q1的最后一个元素c出队即可,此时Q1变为了空队列,Q2中有两个元素,队头元素为a,队尾元

2014-07-21 13:40:32 1253

原创 两个栈实现一个队列

原理:假设有两个栈分别叫stack1,stack2。那么入队操作就是向stack1中push元素,出队操作就是将stack1中的所有元素pop出来,然后push到stack2中,对stack2进行pop操作。题目:题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:

2014-07-21 11:03:12 1209

原创 重建二叉树

1.如何根据二叉树的先序遍历和中序遍历结果还原二叉树?比如,先序遍历结果是{1,2,4,7,3,5,6,8},中序遍历结果是{4,7,2,1,5,3,8,6};那么重建二叉树的过程如下:    1.先序遍历方式为:根->左->右.故1为根节点。中序方式为:左->根->右,所以4,7,2为左子树上的结点,5,3,8,6为右子树的结点。  2.经过步骤1,将

2014-07-19 15:06:16 2697

原创 希尔排序

希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已

2014-07-19 11:03:33 1676

原创 从尾到头打印链表

题目描述:输入一个链表,从尾到头打印链表每个节点的值。输入:每个输入文件仅包含一组测试样例。每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。输出:对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

2014-07-18 15:25:47 1007

原创 简单插入排序

直接插入排序是一种最简单的排序方式,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数增1的有序表。时间复杂度为O(n^2),跟冒泡、选择一样。核心代码://按非降序排列void Insert_Sort(int arr[],int len){ if(arr == NULL || len <= 0) { return; } int i,j,t

2014-07-18 12:48:20 1787

原创 合并两个有序链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和m(0下面一行包括n个数t(1输出:对应每个测试案例,若有结果,输出相应的链表。否则,输出N

2014-07-16 21:26:41 1212

原创 合并两个有序数组

思路:跟替换字符串中的空格一样,都是从后往前遍历。因为从前往后遍历的话,元素需要移动的次数较多。示意图:代码:/******************************************两个有序数组的合并by Rowandjj2014/7/16******************************************/#

2014-07-16 15:16:11 1129

原创 替换字符串中的空格

题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。输入:每个输入文件仅包含一组测试样例。对于每组测试案例,输入一行代表要处理的字符串。输出:对应每个测试案例,出经过处理后的字符串。样例输入:We

2014-07-16 14:14:42 1487

原创 冒泡排序、选择排序

下面是两种最基本的排序:冒泡排序、选择排序.复杂度均为O(n^2)。冒泡排序:bool BubbleSort(int arr[],int len){ if(arr == NULL || len <= 0) { return false; } int i,j,temp; int flag = 1; for(i = 0; i < len -1 && fla

2014-07-16 10:22:31 1465

原创 字符串转整数问题

要点:要考虑到各种非法参数。实现:/**********************************字符串转整数by Rowandjj2014/7/15***********************************/#include#include//不加这个头文件在九度oj上会编译错误using namespace std;int stat

2014-07-15 11:03:06 1200

Android Programming Push the Limits

Android Programming Push the Limits,非常好的一本书。 不要分。

2015-04-08

volley测试代码

包括客户端以及对应的服务端(servlet),客户端代码中的各种url需要改成你电脑的ip。 配合这篇文章:http://blog.csdn.net/chdjj/article/details/43836615

2015-02-15

手机号码归属地离线数据库文件

手机号码归属地离线数据库文件(格式为.db)

2014-07-21

service全面解析

请查看我的博客:全面解析service组件一文的相关描述

2014-02-17

android下解析xml文件的demo

android下解析xml文件的demo

2014-02-08

软件工程 课件

软件工程 课程 的所有课件,非常完整 内容包括概述、软件过程、项目管理、需求、面向对象分析与设计、实现、测试、软件演化等内容

2013-06-04

jdbc连接mysql的文档

MySQL Connector/J Developer's Guide Abstract This manual describes how to install, configure, and develop database applications using MySQL Connector/J, the JDBC driver for communicating with MySQL servers. For release notes detailing the changes in each release of Connector/J, see MySQL Connector/J Release Notes. Document generated on: 2013-01-25 (revision: 34037)

2013-05-04

空空如也

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

TA关注的人

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