随笔分类 - 基础算法
1
摘要:package algs4;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;import java.io.FileInputStream;import java.io.InputStream;/** *...
阅读全文
摘要:蓄水池算法要解决的问题就是在不知道流入数据量多少的情况下,依旧可以随机从这些数中选取K个,乍一听好神奇,其实分析一下背后的概率知识,思想还是很简单的,相信看完我的介绍和证明,你也会觉得很简单。假设要求随机选择K个元素,假设一共流入的元素有n个。 首先数组a[0...k-1]表示最后返回的结果,最开...
阅读全文
摘要:Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacen
阅读全文
摘要:Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephon...
阅读全文
摘要:Given a 2D board containing'X'and'O', capture all regions surrounded by'X'.A region is captured by flipping all'O's into'X's in that surrounded region...
阅读全文
摘要:Reverse a linked list from positionmton. Do it in-place and in one-pass.For example:Given1->2->3->4->5->NULL,m= 2 andn= 4,return1->4->3->2->5->NULL.No...
阅读全文
摘要:Given a stringsand a dictionary of wordsdict, add spaces insto construct a sentence where each word is a valid dictionary word.Return all such possibl...
阅读全文
摘要:Given an arraySofnintegers, find three integers inSsuch that the sum is closest to a given number, target. Return the sum of the three integers. You m...
阅读全文
摘要:You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping yo...
阅读全文
摘要:Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors.OJ's undirected graph serialization:Nodes are labeled uniq...
阅读全文
摘要:实验题目 回溯法实现8皇后问题实验要求 a.掌握递归回溯算法的基本思想。 b.学习掌握应用面向对象通用回溯程序框架解决实际问题。 提高面向对象编程的技能。作业描述:在8*8格的棋盘上放置彼此不受攻击的8个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。8后问题等价于在n*n格的棋盘上放置8个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。package pku.java;import java.util.ArrayList;import java.util.List;public class Main { private static int SIZE...
阅读全文
摘要:假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B,然后令 i = 1 to 9 逐个考察这个序列。此外,我们用一个变量Len来记录现在最长算到多少了首先,把d[1]有序地放到B里,令B[1] = 2,就是说当只有1一个数字2的时候,长度为1的LIS的最小末尾是2。这时Len=1然后,把d[2]有序地放到B里,令B[1] = 1,就是说长度为1的LIS的最小末尾是1,d[1]=2已经没用了,很容易理解吧。这时Len=1接着,d[3] = 5,d[3]>B[1],所以令B[1+1]=B[2]=d[
阅读全文
摘要:题目描述:二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。输入:两个字符串,其长度n均小于等于26。第一行为前序遍历,第二行为中序遍历。二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。输出:输入样例可能有多组,对于每组测试样例,输出一行,为后序遍历的字符串。样例输入:ABCBACFDX
阅读全文
摘要:题目描述:给出年分m和一年中的第n天,算出第n天是几月几号。输入:输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。输出:可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。样例输入:2000 32000 312000 402000 602000 612001 60样例输出:2000-01-032000-01-312000-02-092000-02-292000-03-012001-03-01 1 #include <stdio.h> 2 bool isRun(int x) 3 { 4 return
阅读全文
摘要:题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。输入: 测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。 每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。输出: 将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。 然后输出学生信息,按照如下格式: 姓名 年龄 成绩样例输入:3abc 20 99bcd 19 97bed 20 97样例输出:bcd 19 97bed 2
阅读全文
摘要:最简单的筛素数法方法就是从2开始,将所以2的倍数去掉,然后从3开始,将3的倍数去掉.... 同样任何一个数与其它所有素数的乘积必然也不是素数(这是因为每个合数必有一个最小素因子)。 为了试验这种想法,先用2到10之间的数来验证下。 2,3,4,5,6,7,8,9,10 初始时所以flag都是无标记的。第一步 访问2,flag[2]无标记所以将2加入素数表中,然后将2与素数表中的所有数相乘得到的数必定不是素数,2*2=4因此标记flag[4]。 2,3,4,5,6,7,8,9,10第二步 访问3,flag[3]无标记所以将3加入素数表中,将3与素数表中的所有数相乘得到的数必定不是素数,3...
阅读全文
摘要:POJ-Prob.1458 看算法导论3 自己用java写的,flag可以不用,课后题要求用min(m,n)+O(1)的空间完成...改天再写. 1 import java.util.Scanner; 2 3 /** 4 * Created by IntelliJ IDEA. 5 * User: mayday 6 * Date: 13-2-15 7 * Time: 下午5:03 8 */ 9 public class Main {10 public static int m, n;11 12 public static void main(String[] args...
阅读全文
摘要:import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.HashMap;/** * Created by IntelliJ IDEA. * User: mayday * Date: 12-3-23 * Time: 下午8:39 */public class StringCount { public static void main(String[] args) { String t = ""; int count; ...
阅读全文
摘要:快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(n log n) 演算法更快,因為它的內部循环(inner loop)可以在大部分的架構上很有效率地被實作出來,且在大部分真實世界的資料,可以決定設計的選擇,減少所需時間的二次方項之可能性。
阅读全文
摘要:在一场笔试中,碰到的题目,给一个数组,找出最小的K个数,当然首先想到的就是排序了,库函数sort一下,直接输出.
可以肯定的是这肯定不是出题者想看到的答案,各种排序算法中堆排序对这种寻找最大最小的K个数效率应该是最高的.
可惜的是笔试现场没能一挥而就...之后在电脑上实现了一下,完全的堆排序,对于寻找K个最大最小的只需用大根堆,小根堆然后判断一下到第K个就可以停止了.
阅读全文
1

浙公网安备 33010602011771号