自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10.1观测序列生成

观测序列的生成算法10.1 观测序列的生成过程def vgFun(A,B,$\pi$,T): i=1 O=seq for(i<T){ a=pi * B; o.append(a) pi=pi*A; //前向算法精髓 i++; } return O;

2018-01-20 13:31:10 599

原创 基本算法-partition函数

partition函数为实现快速排序算法的关键函数,其作用是给定一个数组arr[]和数组中任意一个元素a,重排数组使得a左边都小于它,右边都不小于它。public class Partition { public static int partition(int[] arr,int start,int end,int desIndex){ int des=arr[desIndex

2016-09-15 23:04:15 1488

原创 基本算法-二分查找

刷题只是第一步,关键是能够总结,否则也是徒劳,今开始总结系列基本算法,大部分题目可利用基本算法去解。public static int binarySearch(int[] array, int des){ int low=0; int high=array.length-1; while (low<high) { int mid=(low+high)/2; if (a

2016-09-15 22:19:25 280

原创 python的各种模块安装及其两个版本一起安装

安装个python模块,网上各种教程,都没什么靠谱的。。。网上下载python(官网速度超级慢,我都是渣网下的,各种流氓),首先安装好python,将所在位置添加到环境变量中,这样就可以在cmd命令下不用更改路径直接输入python就能调用了再安装easy_install,这是安装各种模块的工具,先网上下载,在安装,完成后将路径添加到环境变量接下来在网上下载好你需要的模块,比如nump

2016-04-29 15:49:44 3476

原创 java编程基础经常用到的方法

String string = "a,b,c";String [] stringArr= string.split(",");  //注意分隔符是需要转译滴...如果是"abc"这种字符串,就直接String string = "abc" ;char [] stringArr = string.toCharArray(); //注意返回值是char数组如果要返回byte数组就直

2016-03-24 23:23:38 310

原创 PAT-Mooncake (25)

题意:算出最大利润解答:分解问题1、按照单价排序(还是用用写比较器的办法。。)2、按说给的数量进行计算利润(分别和不同单价的数量进行比较,大于的就全部把价格加上去,到小于这个单价的数量了在用数量乘以单价得到价格)3、输出格式需要注意具体java代码如下:import java.util.*;public class Main{ public static

2016-03-10 22:05:19 272

原创 PAT-The Black Hole of Numbers (20)

题意:实际上是格式转换解答:要注意的是在使用k1=k1+a[i];k2=a[i]+k2;时先定义String k1="";String k2="";否则会报错;具体java代码:import java.util.*;public class Main{ static char[] a

2016-03-10 21:50:55 234

原创 PAT-Talent and Virtue (25)

题意:按题意进行排序解答:这里还是按以前的做法写一个比较器就可以了用new Comparator{public int compare(o o1,o o2){}}或者implements comparable{public int compareTo(o o1){}}具体Java如下:import java.util.*;public clas

2016-03-10 20:41:08 264

原创 PAT-Dating (20)

题意:按题意进行模拟解答:需要注意的是h=a-'0';字符要减去字符,即使这里是0具体java代码import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in);

2016-03-10 20:31:32 218

原创 Recover the Smallest Number (30)

题意:把几组数据组合起来起来找其中最小的解答:这里用到一个结论,其实要使得连接起来的数,最小我们把a和b连接起来,如果ab(连接)比ba小,则应该先a后b,所以问题就变成一个排序问题了所以我们可以先进行排序,写一个比较器,先进行排序,然后组合,删除前面的0项java的String操作的有坐标的一般都是前闭后开,比如说delete(1,2),删除1保留2具体java代码如下:

2016-03-10 19:24:44 407

原创 PAT-Sharing (25)

题意:链表题,寻找两个链表的公共节点。解答:单链表节点只有一个地址连向下个节点,所以公共节点以后肯定就剩一条链表。

2016-03-10 18:45:29 410

原创 PAT- Hello World for U (20)

题意:打印出所给图形解答:本题关键是理解题意,得出公式还有就是要注意细节具体的java代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); String

2016-03-10 17:14:12 242

原创 PAT-The Dominant Color (20)

题意:从所给的数中做出超过一半的那个数字解答:众数问题,从m * n个数中找出出现多于一半的数——保证存在。本质: 同时删掉两个不同的数,众数不变。 于是我们随便记录一个数x, 来一个数 y, 和x不同的话就把x ,y都扔了,相当于扔掉两个不同的数,和x相同的话,就把计数器加1。所以操作简化为(1) x出现次数的计数器加1(2) x出现次数的

2016-03-10 16:46:48 263

原创 PAT-Linked List Sorting (25)

题意:链表的排序解答:关于非一般的排序实现Comparable,然后重写compareTo方法即可,但是有几点需要注意:1、String使用equals不能用==2、当为空链表时,打印出0 -13、需要遍历链表,因为可能有无用链表4、需要对节点的next从新赋值,最后一个点赋值为-15、使用内部类时,在静态方法中调用时需要用static修饰具体的java代码:

2016-03-10 15:02:28 256

原创 PAT-Course List for Student (25)

题意:模拟课程统计解答:本题和PAT-Student for Course List需求相反,那题用了一个ArrayList里面套了几个ArrayList,本题由于要有名字(String)作为索引,所以使用HashMap,再在里面套一个ArrayList。具体的java代码:import java.util.*;public class Main{ public st

2016-03-10 14:01:31 248

原创 PAT-Pop Sequence (25)

题意:模拟出栈顺序解答:对于每行要测试的数据,单独进行模拟验证,符合要求输出YES,否则输出NO。再验证流程:1. 设置一个索引 index = 0,如果第一个待检测数值为X,则把 index+1 ~ X的数据全部入栈,并把 index 设置为 X,同事还要保证栈的容量不能超标。之后再弹出栈顶原素,和第一个待检测数值比较。2. 接着判断第二待检测原素

2016-03-10 13:27:58 265

原创 PAT-String Subtraction (20)

题意:给定两个字符串,将字符串里1中有字符串2中的字母都去除掉解答:本题一开始想到的是暴力枚举,但是有更巧妙的方法。使用布尔数组,对出现过的字母进行标识,然后对字符串进行遍历,输出没有标识的,相当于利用了一个中介,而不是将两个字符串直接进行比较,注意利用这种思想!具体java代码:import java.util.*;public class Main{ publ

2016-03-10 10:55:24 261

原创 PAT-Find Coins (25)

题意:解答:经典2-sum,问题,从一串数里找到两个和为m。做法: 把数组排序,然后用两头扫的办法。i = 0, j = n - 1如果a[i] + a[j] 如果a[i] + a[j] > m, 则需要减小, --j如果有解,第一次找到的一定是a[i]尽可能小的,这正是题目要求的。首先最大值和最小值相加大于此值的话,说明最大值肯定不是目

2016-03-10 10:15:15 302

原创 PAT- Student List for Course (25)

题意:学生课程选课的统计问题,后面有一道相似的题,不过条件和问题反过来解答:采用容器就够了,注意容器里面投容器,需要先初始化一下容器里面有几个容器具体Java代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new

2016-03-09 23:38:50 227

原创 PAT-Shopping in Mars (25)

题意:滑动窗口题解答:本来利用二分查找,但是后来看到一种新解法,觉得更加简单,现在利用此种方法。利用下标i和j维护窗口,j在前面,i在后面,窗口里的数的和小于目标数则继续向前,如果大于目标数,则i向前一步,并减去i坐标所在的值,通过不断维护i和j从未维护窗口。具体代码如下:import java.util.Scanner; public class Main{

2016-03-09 14:47:17 208

原创 PAT-Shuffling Machine (20)

题意:随机打乱一组数解答:注意多次打乱的时候,每个位置的值都会变化,需要变更赋值数组上的值,而此值就是上一次变换后的值,有点交换的味道。具体java代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new Scann

2016-03-09 13:48:29 229

原创 PAT-Be Unique (20)

题意:获得第一个不重复的字符解答:本题使用map就够了,但是需要注意HashMap不是按顺序存放,所以遍历拿出来的并不是按原来加进去的顺序,此时可以使用LinkedHashMap,它是按顺序存放的。此外还需要注意遍历,Map.Entry具体java代码如下:import java.util.*;public class Main{ public static void

2016-03-09 13:33:10 306

原创 PAT-Speech Patterns (25)

题意:alphanumerical character意为字母数字字符the lexicographically smallest one意为按字典顺序最小的一个all lower case小写的case insensitive不区分大小写解答:此题需要注意substring(a,b),包括a但不包括btoLowerCase,全部变为小写,相应的toUp

2016-03-09 10:15:51 218

原创 PAT-A+B and C (64bit) (20)

题意:大数据的相加解答:,long的范围是-2^63,2^63-1。相加后的长度会变得更大,所以并不能满足此处采用BigInteger,理论上支持无限大的数,只要机子内存充足还需要注意的是,此类不能用+->,而是用compareTo具体java代码如下:import java.util.Scanner;import java.math.*;public class

2016-03-09 09:48:25 228

原创 PAT-Complete Binary Search Tree (30)

题意:the level order意思是层序重构BST,并层序输出解答:利用BST的中序遍历为自然排序,从而重构出BST。中序遍历从最左边开始遍历,将排序好的数组中的第一个赋值给他,以此类推,其实是一个不断递归和回溯的过程。root《1,表示左移以为,即乘以2具体java代码:import java.util.*;public class Main{

2016-03-09 09:27:06 174

原创 PAT- Prime Factors (25)

题意:将一个数分解为素数相乘解答:1、使用素数去除2、注意输出格式,因为除到最后n可能等于1,也有可能n本来就等于1,这时候就需要标记来区分输出具体java代码:import java.util.*;public class Main{    public static void main(String[] args){        Scanner in=new S

2016-03-08 23:03:27 296

原创 PAT-A+B in Hogwarts (20)

题意:进制的转换解答:本题需要注意的是split(“.”)点时,需要转译符//具体java代码:import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); String A

2016-03-08 22:43:07 259

原创 PAT-Stack (30)

题目:模拟栈的活动,还要找出中位数。解答:1、使用一个真正的栈2、为了模拟空栈的行为需要定义size3、为了计算出中位数,定义了数组中位数可以定义一个全为0的数组,出现过的数,将其当做坐标,并且记录出现的次数,则在找中位数的时候就是找中间那个数,也就是(size+1)/2的数,这是此题的巧妙之处具体的java代码为:import java.util.*;publi

2016-03-08 22:35:12 266

原创 PAT-Hashing

题意:1. MSize是给的哈希表最大容量,如果它不是素数,需要自己找一个大于MSize的最小素数。2. Quadratic probing翻译为二次探查法,数值插入哈希表遇到冲突时,需要通过二次探查的方式找到新的可插入位置,如果找不到,返回“-”。对于给定的Key,求它所在位置的过程如下:第一次:position = (key+ d1*d1) % MSzie;

2016-03-08 21:33:59 359

原创 PAT-Kuchiguse

题目:寻找几个字符串中的公共字符解答:1、本题首先要注意数据的读入,因为直接用in.nextInt,光标还是停留在这一行,这是需要再用一个nextLine,或者直接用nextLine,再转换。2、以第一行为基础,从尾部开始,和其余的行进行比较,出现不一样先跳出内循环,在利用标识,使其跳出外循环。具体的java代码为:import java.util.Scanner;pub

2016-03-08 21:13:30 279

原创 PAT-Deduplication on a Linked List (25)

题意:链表的题,将重叠的去掉,组成两个链表。解答:PAT的链表题都是一个套路,定义节点Node,并把id和Node对象放到map中,方便寻找。这里为了方便查找有没有重复,使用了HashSet,因为Hashset有contains方法可以方便检查是否重复。1、首先要遍历所有的节点,防止会有无用节点2、节点的next需要重写3、尾节点一定要定位-1;具体的java代码实

2016-03-08 20:53:58 263

原创 PAT-Consecutive Factors (20)

题意:找一个数的连乘。解答:用暴力枚举即可,枚举到sqrt(N),这里连乘的实现将N%j放到循环的条件里即可实现。具体的java代码为:import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(Sy

2016-03-08 20:37:59 216

原创 PAT1005-The Largest Generation

题意:家族组成树,求孩子最多的一层。解答:本题关键两个问题:1、用什么数据结构储存数据2、怎么把数据读取出来处理定义了一个节点对象存放数据,在取出来的时候使用了队列,加入队列的是这一层所有的孩子,也就是说要先把队列的父类全部取出来,然后将下一代全部压入,没这么操作一次,深度加1,并且保存最大孩子数。此处注意使用addAll(),可以方便不少。还要注意节点对象的定义了

2016-03-08 20:24:48 241

原创 PAT1004-Acute Stroke (30)

首先插一句:在PAT上出现运行错误一般是数组出了错,注意检查即可。题意:给你一个由0和1组成的三维的数组,计算每个由1填充的连通区域中的1的个数,连通的概念可以很容易从题目中那幅图理解,如果个数大于给定的t就将这一区域中的1的个数累加到最终的ans中,最后输出ans,感觉这道题目最难的根本不是编程,而是生词太多。解决的方法无外乎DFS和BFS两种。解法是对每个含有1的点进行搜索,搜索的

2016-03-08 19:43:11 283

原创 PAT1003-Highest Price in Supply Chain

题意:题意的理解需要注意each number Si is the index of the supplier for the i-th member.意思是说所给的数值依次是第i的供应商,也就是父类,此处的i是从0到n-1,并不是说所给的数值,所给的数值为Si,i并没有直接给出。the number of retailers that sell at the highest pr

2016-03-08 17:55:08 214

原创 PAT甲级1001-Public Bike Management (30)

题意:题目背景是杭州公共自行车管理问题。包括一个管理中心,N个自行车站点,当站点没有自行车或者放满时,需要从管理中心出发去往问题站点调整到最佳状态Cmax/2,沿途经过的顶点也需要调整到最佳状态,要求:1、去往问题站点的的路径要最短2、如果有多天最短路径,那么拿回管理中心的车或者从管理中心拿过去的车越少越好(这点题目没有全,需要自己推断)解决方法:图使用邻接矩阵储存涉及到最

2016-03-08 17:14:22 391

原创 关于比较

在PAT中的很多题目中,需要按照要求进行排序,而这种排序基本上是Java本身不具备的,这时使用接口Comparable或者Comparator有两种方式可以进行集合排序 :集合中对象的所属类实现了 java.lang.Comparable 接口为集合指定比较器 java.lang.Comparator 的实现类一、public interface Comparable 接口

2016-03-06 23:11:54 219

原创 关于Android连连看中的图片分布

一、连连看中出现触点偏移的问题原因:出现这样问题的原因是由于同样的图片,在不同屏幕分辨率手机上显示的时候,图片的长宽却有差异。通过调用Bitmap的getHeight() 和getWidth()就知道这个结果了。比如在windows上查看长宽为64的图片,实际在我手机上Height和Width的值都是96.所以,在没有指定图片显示区域的大小的时候,canvas在显示图片时会用图片自身的长宽

2016-03-05 14:19:57 412

原创 关于二叉树的遍历

先构建树:1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 2.具体代码 import java.util.LinkedList; import java.util.List; /** * 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历 * * 参考资料0:数据结

2016-02-25 11:47:40 241

原创 关于递归和回溯

void DFSTraverse() { flag = new boolean[number]; for (int i = 0; i < number; i++) { if (flag[i] == false) {// 当前顶点没有被访问 DFS(i); }

2016-02-23 10:33:52 1548

空空如也

空空如也

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

TA关注的人

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