- 博客(300)
- 收藏
- 关注
原创 LeetCode 135. Candy (O(n)时间 O(n)和O(1)空间的两种实现)
贪心算法,从局部最优推广成全局最优。这里介绍O(n)时间 O(n)和O(1)空间的两种实现方法。
2015-02-17 00:14:46 2100
原创 manacher算法 (O(n)求最长回文子串)
我们可以用O(n^2)暴力求解最长回文子串。之所以是这个复杂度,是因为我们对每个字符比较其两边元素是否相等时,我们都是从它最旁边的一个开始迭代的。但如果我们能以该字符为中心,其附近的某一段子串已为回文,在此基础上比较更远的元素,那么就有可能降低这个复杂度了。
2014-06-06 00:16:05 1916
原创 背包问题
hihocoder 1038. 01 背包dp[i] 表示使用掉 i 张奖券(消耗掉 i 的空间)后,能获得的最大价值。代码:#include #include #include using namespace std;int main() { // Input int n, m; cin >> n >> m; vector needs, values;
2016-07-10 11:31:51 682
原创 [Java] 模拟题2
第8题可以用 int(Math.sqrt(x)) * int(Math.sqrt(x)) == x 可以判断整型 x 是个平方数。错误。我认为错误的原因是:这条语句是语法错误的。
2016-06-19 10:20:45 819
原创 [Java] 作业8(继承、多态)
Q37题目定义了两个 public class, 所以如果要完全模拟题目的情景,需要创建两个 .java 文件。因为每个 .java 文件里有且只能有一个 public clas. // Parent.javapublic class Parent { public float aFun(float a, float b) throws IOException { // ..
2016-06-15 19:36:11 1791
原创 [Java] 往年试卷
public class Test { public static void main(String[] args) { int sum = 0; for (int i = 1; ; ++ i, sum += i) { System.out.println("i = " + i + ", sum = " + sum); if (i > 10)
2016-06-14 23:48:27 1032
原创 [Java] 实验13
70001 参考《Java语言程序设计--基础篇》: - 8.1 引言 - 8.2 定义对象的类。简单描述了语法规则 - 8.3 举例:定义类和创建对象。以 Circle 为例。代码填空:import java.util.*;public class CircleTest { public static void main(String args[
2016-05-31 23:40:40 1730
原创 [Java] 实验12
60021 求字符串长度import java.util.Scanner;public class StringLengths { public static void main(String[] args) { Scanner in = new Scanner(System.in); // Obtain the string, like "hello#123#" ,
2016-05-24 21:42:43 2313
原创 [Java] 作业6(字符串)
Q1《Java语言程序设计 基础篇》第8版: - 9.2.3 字符串的比较Q8a, c: 可以用 + 来连接两个字符串;d: str.length 返回 str 的长度b: + 不可以用来连接 String 和 intQ24a: 参考Q8b: 不支持String间的 >= 操作符c: int i = s1.length(), lengt
2016-05-23 00:07:08 1039
原创 [Java] 实验11
60005 排序可以参考书中冒泡排序或插入排序的相关内容。60012 加法口诀表import java.util.Scanner;public class Add { public static void main(String[] args) { Scanner in = new Scanner(System.in); int repeat = in.
2016-05-17 11:46:41 1366
原创 [Java] 实验10
50011这题考察如何定义method。method主要由 - 返回值 (return value) - 方法名 (method name) - 参数列表 (argument list) - 方法体 (method body)组成。这题的max方法,大概是:int max(int a, int b, int c) { // ...}
2016-05-10 21:57:16 1046
原创 [Java] 作业5 (数组)
Q40// Program Ipublic class Test { public static void main(String[] args) { int[] list = { 1, 2, 3, 4, 5 }; reverse(list); for (int i = 0; i < list.length; i++) System.out.print
2016-05-04 23:34:49 1713
原创 [Java] 实验9
得知周一的同学少上了两次课的我,内心几乎是崩溃的。大家要尽量独立思考独立实现,仍有不明白的,可以参考下文中给出的提示。50006 输出 Fibonacci 序列private static int fib(int n) { if (condition) { return 1; } int first = 1; int second = 1;
2016-05-04 00:48:22 1078
原创 [Java] 作业4答疑
写在最前面:这些试题多是计算机学院的二三年级学生的Java课中的考试题目。大家不会做很正常,不要紧张,尽量去理解即可。期末考试的难度不会这么高,虽然我不清楚期末考试的题型。
2016-04-22 13:22:47 1559
原创 [Java] 实验8
1. default package问题可参考实验62. for, if, while等,后面包含多条语句时,需要用花括号括起来3. 为什么需要close scanner, 可参考实验6 (已简要更新原因)40037 计算不及格的人数在第二行输出结果错误(平均分输出73.75, 或者不及格人数输出3)的同学,可以参考实验六“求1+1/2+1/3+……+1/n”那题,第3点。
2016-04-19 23:59:17 1430
原创 [Java] 实验7参考代码
1. default package问题可参考[Java] 实验6参考代码2. for, if, while等,后面包含多条语句时,需要用花括号括起来3. 为什么需要close scanner, 可参考[Java] 实验6参考代码 (已简要更新原因)求最小公倍数和最大公约数最大公约数(gcd)的求法可以参考维基百科——辗转相除法;最小公倍数(lcm)的求法,在此举一个特
2016-04-13 00:50:11 1797
原创 [Java] 实验6参考代码
求1+1/2+1/3+……+1/n1. 整数 / 整数 = 整数2. 如何进行从1到n的循环:for (int i = 1; i <= n; ++ i) { // todo}求1-1/2+1/3-1/4+……如何在每次迭代(iteration, 非正式的可以理解成“一次循环”)中改变符号:boolean positive = true;for (int i =
2016-04-05 10:21:06 1877
原创 [Java] 实验5参考代码
实验4月3日晚截止,实验截止后将在此给出完整的参考代码。1. 如何使用下面的代码模板: 1.1 在eclipse中创建对应名称的类 1.2 将代码复制到类文件里 1.3 在//todo注释中输入你用于解题的代码。 1.4 例子:参考第一题“显示两级名字”,大家就可以这么做 1.4.1 在eclipse中创建类,名字叫做PassOrFail 1.4.2 将下面的代码复制到.java文件中,并删除//todo注释,开始在while循环里写代码
2016-03-29 18:57:43 1769
原创 微软笔试题
March 27th, 2016Hihocoder 1285. 智力竞赛Two dimensional dynamic programming. rights[i][j] i: # of stages we have passed j: j chances we have used rights[i][j]: the minimal right an
2016-03-29 18:37:16 814
原创 [Java] 作业3答疑
Q11-- i --; // 这里语法错误,题目不对Q12 根据语法,case后面需要跟break, 才会跳出switch语句,否则将依次执行正确case后面的所有语句。所以此题的运行结果是:int i = 10, j = 18, k = 30;switch(j - i) { case 8: k ++; // k = 31 case 9: k += 2; // k =
2016-03-28 21:19:20 1083
原创 LeetCode 292. Nim Game
LeetCode 292. Nim GameSay there are s = 4n + i (i = 1, 2, 3) stones on the table.Initial stateConsider the case where n = 0, there are at most 3 stones on the table. You take the first
2016-03-26 10:22:35 539
原创 什么是代码缩进(code indent)
一个简单的代码缩进(code indent)的样例是:public class A { public static void main() { bool condition = true; if (condition) { System.out.println("The condition is true."); } else { System.out.println
2016-03-23 11:43:01 14338
原创 [Java] 实验4参考代码
实验3月27日晚截止,实验截止后将在此给出完整的参考代码。大小写转换在 [Java] 作业2答疑Q31中,我们谈到了int和char间的相互转换。大家可以参考Q31中给出的代码,编写一个java程序,在控制台先输出字符'a', 'A', 'b', 'B'对应的int数值,看看有什么规律。计算三门课程的平均成绩一定要认真读题,看清题意。一定要认真读题,看清
2016-03-22 22:59:41 3512
原创 [Java] 实验3参考代码
平方根double res = Math.sqrt(num);// Math.sqrt(num)用来求num的平方根// res是作为result的缩写// 将result定义成double而非int类型:int类型无法表示浮点数。求余int num = 4 % 5; // num为4除5的余数,亦即num=4
2016-03-15 21:20:45 1552
原创 [Java] 实验2参考代码
最后一题,要求先从控制台读取一个数字n, 执行n此循环;在每次循环中读取a, b的值,并输出a, b的和。代码:import java.util.Scanner;public class Sum { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = i
2016-03-15 21:14:53 710
原创 [Java] 作业2答疑
Q31. Suppose i is an int type variable. Which of the following statements display the character whose Unicode is stored in variable i?a. System.out.println(i);b. System.out.println((char)i);c. S
2016-03-14 19:59:44 1509
原创 [Java] i++与++i的区别(后缀++与前缀++)
后缀++ (Postfix Increment)根据Oracle官方给出的文档Postfix Increment Operator ++,假如i=10, 那么i++的行为是:先将1与变量的值相加,将新值(11)存回变量表达式返回旧值(10).下述程序表达了这一过程:int i = 10;System.out.println(i ++); // 输出10前缀
2016-03-13 10:40:57 2800
原创 [Java] public class, main和args的解释
大家可以下载《Java编程思想》第四版,参考2.7小节“你的第一个Java程序”。里面介绍了public class, main的含义。文件名与类名我们如果需要创建一个独立运行的程序,那么文件中必须存在某个类与该文件同名(否则编译器会报错),而且那个类必须包含一个名为main()的方法。所以在HelloWorld.java文件中,我们必须存在如下类定义:// Hello
2016-03-12 11:49:56 6536
原创 [Java] 作业1答疑
Q27.设a=10; b=2*a++; 执行语句System.out.print("a="+a+++" b="+b);的输出结果是_____。为解决这题,我们要先给大家介绍表达式(expression)与求值(evaluation)两个概念:表达式我们可以将"一个变量"或"变量与操作符"组成的语句称为表达式,比如:“a“, ”a+b“, ”a++“这些都是表达式。求值我
2016-03-04 10:33:38 1367
原创 [Java] Eclipse安装
1. JRE和JDK1.1 JREJava程序需要在Java Runtime Environment (JRE)下才可以运行。Eclipse软件本身是用Java写的,所以要运行Eclipse,电脑需要安装JRE.1.2 JDK1.2.1 什么是JDKEclipse软件的作用有很多,可以用来编写Java, Scala, C/C++等程序。如果要用来开发Java程序,那么就
2016-03-02 13:50:03 796
原创 [Java] 实验1
学有余力的同学可以看看下述文献,有助于写出更好的程序。问题4. 显示以下表格以某种格式输出:Print with formatting格式详解:Decimal formatting - 注意到,left-justified可以满足实验要求
2016-03-01 22:58:10 942
原创 LeetCode 220. Contains Duplicate III
参考了Eason Liu的博文,代码:class Solution {public: bool containsNearbyAlmostDuplicate(vector& nums, int k, int t) { multiset bst; for (size_t i = 0; i < nums.size(); ++ i)
2015-09-17 19:36:59 536
原创 LeetCode 219. Contains Duplicate II
实验室最近的项目可能要用到一些js, 所以开始一些练习。/** * @param {number[]} nums * @param {number} k * @return {boolean} */var containsNearbyDuplicate = function(nums, k) { var hash = {}; for (var i in nu
2015-09-08 12:12:34 490
原创 LeetCode 216. Combination Sum III
递归即可。代码:class Solution {public: vector> combinationSum3(int k, int n) { for (int i = 1; i0 && i<=n; ++ i) { vector cur(1, i); gao(i+1, k-1, n-i, cu
2015-09-08 12:11:02 429
原创 LeetCode 214. Shortest Palindrome
题意为,允许在字符串的头部添加字符,使其成为回文。最简单的方法是讲该字符串翻转为s2, s2 + s1即为回文,但题目要求的是最短的回文串。于是问题便转换为一个,求以原字符串首字符开头(s[0])的最长子串的长度(亦即使得s.substr(0, length)为回文的最大length值)这么一个子问题。 —— 可以想象,当求得这么一个length后,我们将s.subst
2015-08-27 17:09:36 851
原创 LeetCode 215. Kth Largest Element in an Array
快排代码:class Solution {public: int findKthLargest(vector& nums, int k) { int begin = 0, end = nums.size() - 1; while (begin < end) { int left = begin
2015-08-26 11:33:53 663
原创 LeetCode 213. House Robber II
和LeetCode 198. House Robber类似,应用动态规划,构造数组dp[nums.size()][2][2], 相比LeetCode 198. House Robber, 由于题目将整个房子变成了一个环形,我们在此就多增加了一维k, 用来专门标识是否取nums[0]. 对于dp[i][j][k], j=0时不取nums[i], j=1时取nums[i];k=0时不取nu
2015-08-12 16:15:24 637
原创 LeetCode 211. Add and Search Word - Data structure design
借用LeetCode 208. Implement Trie (Prefix Tree)中设计的字典树,特判查询字符为.时的情况即可。注意:成员变量的初始化应放在构造函数的initializing list而不是body中,使成员变量只被初始化一次,没有被再次赋值;使用shared_ptr代替裸指针来管理内存。代码:class TrieNode{public: T
2015-08-10 10:50:13 1158
原创 LeetCode 173. Binary Search Tree Iterator
中序遍历。用栈保存的节点,始终都为该层尚未被next()访问过的最小节点,初始化为: for ( ; root != nullptr; root = root->left) { stk.push(root); }在每次调用next移进迭代器时,意味着移出的该节点左子树为空(之前都已迭代过),所以把它的右子树的
2015-08-05 18:43:42 617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人