摘要:Git命令 1. 撤销修改 (1) 当改乱了工作区(working directory)某个文件的内容,想直接丢弃工作区中的修改时,用命令git checkout -- file。 (2) 当不但改乱了工作区某个文件的内容,还添加到了暂存区(stage),想丢弃修改,分为两步,第一步用命令git r
阅读全文
摘要:Git常用命令 1. 命令git init把这个目录变成Git可以管理的仓库: 2. 命令git commit把文件提交到仓库 这里需要注意的是,Git只能跟踪文本文件的改动,如txt文件,网页,所有的程序代码等等,如在第5行加了一个单词“Linux”。而图片、视频是二进制文件,没办法跟踪文件的变化
阅读全文
摘要:Git是目前世界上最先进的分布式版本控制系统。 分布式与集中式的区别? 集中式最大的毛病就是必须联网才能工作;而分布式根本没有“中央服务器”,每个人的电脑都是一个完整的版本库,这样,工作的时候就不需要联网了。此外,分布式的安全性要高于集中式的,因为每个人电脑里都有完整的版本,某一个人的电脑坏掉都不会
阅读全文
摘要:题目 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 分析 按照中序遍历方式,取出第k-1位置上的结点即可 代码
阅读全文
摘要:题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 分析 使用两个栈去实现。奇数行使用stack1,偶数行使用stack2。 注,使用stack1时,按照左右的顺序存储;使用stack2时,按照右左的
阅读全文
摘要:题目 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 分析 用队列从根开始存储,首先判断队列是否为空,若不为空,取出第一个元素,将该元素的左孩子和右孩子(在有的情况下)继续存到队列中,知道队列为空。 注,因为返回的是ArrayList<ArrayList<Integer>>类型,所
阅读全文
摘要:题目 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 分析 因为二叉树是对称的,所以将该树自己与自己的递归比较,分为三种情况: (1)当两棵树都为空时,返回true; (2)当只有一颗树为空时,返回false; (3)当两棵树都不为空时
阅读全文
摘要:题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 分析 用递归的方法。 代码
阅读全文
摘要:题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 分析 将数字转换为字符串形式,然后对字符串数组进行字符串的排序(本题中用的是快排),最后按照顺序连接起来即为输出。
阅读全文
摘要:题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 分析 参考
阅读全文
摘要:题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 分析 用递归的思想。将第一个字符与后面的交换位置;然后固定第一个字符,求后面所有字符的排列....... 代码
阅读全文
摘要:题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 分析 假设这两个数字为A和B,将数组中的所有数字进行异或,最后结果为all=A^B;然后找到all二进制形式最后一个1所在的位置,如all=110,则设置n=010;然后遍历数组,将array[i]&
阅读全文
摘要:题目 统计一个数字在排序数组中出现的次数。 分析 利用二分查找,找到该数字第一次出现的位置和最后一次出现的位置。 代码
阅读全文
摘要:题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析 利用队列 代码
阅读全文
摘要:题目 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 分析 该题考察的是考虑问题的全面性,主要有以下几点: 1. 当base为0时,结果为0; 2. 当exponent为0时,结果为1; 3. 当exponent>0时,........
阅读全文
摘要:问题 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 分析 假设两个整数a=5和b=17,对应的二进制位101和10001。 1. 首先将a和b进行异或运算(作用是,忽视进位),a^b = 10100 2. 然后将a和b进行与运算,并将结果向左移一位,(a&b)<<1
阅读全文
摘要:题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子....
阅读全文
摘要:题目 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找
阅读全文
摘要:问题 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 分析 设置两个下标low(初始时,指向数组头)和high(初始时,指向数组尾),当array[low]+array[high]<S时,low++;当array[lo
阅读全文
摘要:题目 一个链表中包含环,请找出该链表的环的入口结点。 分析 首先检查该链表是否为环,设置一个快指针fast,每次走两步,一个慢指针slow,每次走一步。若fast==null或fast.next==null,表示不存在环;当fast==slow时,存在环。 将fast指向链表头,每次走一步,slow
阅读全文
摘要:题目 输入两个链表,找出它们的第一个公共结点。 分析 首先分别遍历list1和list2,得到两个链表的长度count1和count2,同时,判断两个链表的尾指针是否相同,如果不同,说明两个链表不存在公共结点;如果相同,则继续......。比较count1和count2,如果count1>count
阅读全文
摘要:题目 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置 分析 遍历一遍字符串str,使用LinkedHashMap<Character, Integer> map按照str的顺序来存储每个字母出现的次数;再对map进行遍历,找到第一个次数
阅读全文
摘要:题目 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 分析 如何对每个数字进行丑数的判断,时间复杂度将会非常大,所以我们要从其他角度进行考虑。 使用ArrayList<
阅读全文
摘要:题目 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2
阅读全文
摘要:题目 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 分析 把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0。 代码
阅读全文
摘要:题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数? 分析 从二维数组的左下或右上开始查询,本题中将以左下为例。由于每行每列都是递增的,所以从左下角(i = row-1, j =
阅读全文
摘要:调用super()的语句必须要写在子类构造方法的第一行。 super()是在子类中调用父类的构造方法;this()是在同一类中调用其它方法。 super()和this()都需要放在构造函数的第一行。 super()和this()不能同时出现在一个构造器中。 super()和this()都不可以放在s
阅读全文