随笔分类 - 算法笔记学习心得
刷题总结算法题知识点
摘要:把一句英文句子中的每个英语单词反转,但是单词中字母顺序不变,例如“I am Tom” 变为“ Tom am I”。 public class sentenceReverse { public static void sentenceReverse(String str){ char[] ch=str
阅读全文
摘要:class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class traversal { //先序遍历 public void preOrderRecursionT
阅读全文
摘要:时间复杂度 冒泡排序 public class bubbleSort { public static void println(int[] num){ for(int i=0;i<num.length;i++){ System.out.println(num[i]); } } public stat
阅读全文
摘要:题干 找到n以内的所有素数 方法一:穷举法 找10000以内的素数 package Important; public class primeSieve { public static void printNum(int[] num,int count){ int length=num.length
阅读全文
摘要:1.1框架思维 1.1.1数据结构的存储方式 数据结构的底层存储方式只有两种:数组(顺序存储)和链表(链式存储) 队列和栈,既可以用链表实现,也可以用数组实现。用数组实现则要考虑扩容问题,用链表实现没有这个问题,但需要更多的内存空间存储节点指针 图的表示方式,邻接表就是链表,邻接矩阵就是二维数组。用
阅读全文
摘要:部分结构 TreeNode二叉树 public class TreeNode{ int val; TreeNode left; TreeNode right; //构造函数 TreeNode(int val){ this.val=val; this.left=null; this.right=nul
阅读全文
摘要:set是集合,是一个内部自动有序且不含重复元素的容器 要去掉重复元素的情况,而且有可能因这些元素比较大或者类型不是int型而不能直接开散列表 set提供更为直接的接口,加入了set之后可以实现自动排序 #include<set> 单独定义一个set set<typename> name; set数组
阅读全文
摘要:后进先出,栈中没有元素时令top=-1 清空 void clear(){ TOP=-1; } 获取栈内元素个数 int size(){ return TOP+1; } 判空 bool empty(){ if(TOP 1){ return true; } else{ return false; } }
阅读全文
摘要:1.vector的常见用法 //vector的定义 //定义一个一维数组name[size] vector<typename> name; //定义一个二维vector数组,当作两个维都可变长的二维数组 vector<vector<int> > name; //注意如果typename是一个STL容
阅读全文
摘要:如果遇到1000位的加减,只能通过模拟来确定精度 定义int 型数组存储大整数。 原则:整数的高位存储在数组的高位,整数的低位存储在数组的低位,因为在进行运算的时候都是从整数的低位到高位进行枚举,顺位存储和这种思维相吻合。 因此实际上是逆位存储,再度入后需要在另存为数组的时候反转。 定义结构体并初始
阅读全文
摘要:题目描述: Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n =
阅读全文
摘要:素数 除了1和本身之外,不能被其他数整除的一类数 1.对给定的正整数n,对任意的正整数a(1<a<n)都有n%a!=0成立 2.一既不是素数也不是合数 3.n与2到n-1中每一个数相除来测试是否能否整除,但是O(n)复杂度有点大,为了优化,可以通过平方来减少次数 #include<iostream>
阅读全文
摘要:最大公约数: 方法:辗转相除法 递归边界:0和任意一个整数a的最大公约数都是a 递归式:gcd(a.b)=gcd(b,a%b); 递归边界:gcd(a,0)=a; #include<iostream> using namespace std; int gcd(int a,int b){ if(b==
阅读全文
摘要:题目描述: 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。 输入: 输入有多组数据。每组一行,输入x n。 输出: 迭代n次后的立方根,double精度,保留小数点后面六位。 样例输入: 465468
阅读全文
摘要:题目描述: 计算两个矩阵的乘积,第一个是2*3矩阵,第二个是3*2矩阵,结果为一个2*2矩阵。 输入: 输入多组数据,先输入一个2*3矩阵,再输入一个3*2矩阵。 输出: 输出两个矩阵的乘积。 样例输入: 1 1 1 1 1 1 1 1 1 1 1 1 样例输出: 3 3 3 3 来源: http:
阅读全文
摘要:问题: 如何从一个无序的数组中求出第K大的数。 思路一: 对数组排序,直接取第K个元素,O(nlogn) 思路二: 选择随机选择算法,O(n) 求两个自己和的元素和之差 #include<iostream> #include<cstdio> #include<cstdlib> #include<ct
阅读全文
摘要:题目描述: 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度
阅读全文
摘要:C语言中有可以产生随机数的函数,需要添加stdlib.h与time.h头文件 给出一段代码表示生成是个随机数: #include<iostream> #include<stdlib.h> #include<time.h> using namespace std; int main(){ srand(
阅读全文
摘要:快速排序时间复杂度O(nlogn) 对一个序列A进行排序,使得A[1]左侧院所都小于A[1],右侧元素都大于A[1],速度最快的做法是双指针法。 #include<iostream> using namespace std; int Partition(int A[],int left, int r
阅读全文
摘要:题目描述: With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find
阅读全文

浙公网安备 33010602011771号