寒假算法专题总结
文章平均质量分 74
陈一Kristian
这个作者很懒,什么都没留下…
展开
-
第二章&第三章 查找和排序(上)
1、经典递归问题:汉诺塔问题:(递归+分治)分治法要包括递归法:分治是指将原问题划分成多个小规模的子问题,递归的解决这些字问题然后合并其结果,得到原问题的解代码:class Main{ public static void main(String[] args) { int num = 2; int x = hannuo(num); ...原创 2019-01-26 09:43:34 · 262 阅读 · 0 评论 -
第八章(下) 贪心策略与动态规划
1、完美的串https://blog.csdn.net/hz18790581821/article/details/55101062他是另一个题的简单版2、给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串?一次操作可以在任意位置插入一个字符,或者删除任意一个字符,或者把任意一个字符修改成任意其他字符。输入字符串 S。S 的长度不超过100, 只包含...原创 2019-02-25 11:36:33 · 251 阅读 · 0 评论 -
第十章 哈希表,哈希映射
基础知识:k1和k2映射到同一值域,也叫压缩映射,比如通排序就是一种特殊的哈希表散列函数:直接定址法数字分析法平方折中法折叠法随机数法除留余数法 ×最好理解冲突解决开放定址法拉链法 就是后面写一个链表继续下去,但是如果数据很多可能会退化成0(n)双散列 如果这里冲突就顺着这个往下走0(1)再散列 再次哈希,一直到找到空的为止 0(1)...原创 2019-02-18 15:50:33 · 502 阅读 · 0 评论 -
第九章 列表,链表,栈,队列
1、桶排序工作的原理是将数组分到有限数量的桶子里。<br />* 每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。<br />* 桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。<br />* 但桶排序并不是 比较排序,他不受到 O(n log n) ...原创 2019-02-18 14:53:08 · 182 阅读 · 0 评论 -
第六章 数学问题(下)
1、一维世界的爱情两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了...原创 2019-02-11 14:56:42 · 187 阅读 · 0 评论 -
第十一章 图论
bfs解决最短的问题,那个点到哪个点要走的最短的距离,bfs一定要写vis数组,访问过的节点要标注为1,走下一步(也就是往queue中放新节点时)一定要判断vis【】等于0,即没有访问过。dfs呢?dfs解决分成几块,哪两个点之间是否能联通的情况。也一定要有vis数组其他过程与上述一样,但是如有回溯的需要的话,就需要在回溯时再把vis改成0树与图的关系1、没有圈的连通图,就是树(连通图...原创 2019-02-17 08:16:44 · 267 阅读 · 0 评论 -
第七章(下) 递归、DFS、剪枝、回溯问题
1、描述给定一个字符串str,str全部由数字字符组成,如果str中某一个或者某相邻两个字符组成的子串在1~26之间,则这个子串可以转换为一个字母。规定“1”转换为“A”,“2”转换为“B”……“26”转换为“Z”。求str有多少种不同的转换结果。输入字符串str(|str|<20)输出可转换结果的数目样例输入12345678样例输出3ht...原创 2019-04-20 16:21:00 · 278 阅读 · 0 评论 -
第八章(上) 贪心策略与动态规划
动态规划和贪心算法都属于递推算法,但是与dfs求解的个数或者是全部解不同的是,他们俩是用来求最优解,且都是用局部最优来推导全局最优解,是对遍历解空间的一种优化。当问题具有最优子结构时,可用动归,而贪心是动归的特例。贪心只不过是只要顾及眼前的最优就可以求得全部的最优,而动归不是。1、硬币问题有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c100,c5...原创 2019-02-09 21:17:36 · 349 阅读 · 0 评论 -
第七章(上) 递归、DFS、剪枝、回溯问题
其实题目四个关键字就是一个递归的问题,解决:“有多少种方案这种问题”;递归问题1、递归改迭代:(递归可以改成迭代,递归是自上而下的倒着想,而迭代是自下而上的一步步更新变量,其实递归和迭代,迭代要更好一点,,因为他所占的空间要少,不需要递归那样用到栈的结构而开出一大片地方来)(但递归具有更强的表达力,用几句代码表达出很复杂的关系,改成迭代则需要写很多才可以)(递归问题分为数值型和非数值型)...原创 2019-02-05 18:28:04 · 611 阅读 · 0 评论 -
第五章 字符串专题(下)
1、后缀数组我在这里写的实在不形象,,推荐一篇blog吧,https://www.cnblogs.com/xiaoyh/p/10322424.htmlimport java.util.Arrays;class test3{ public static void main(String[] args) { match(); } static ...原创 2019-02-02 11:17:20 · 211 阅读 · 0 评论 -
第二章&第三章 查找和排序(下)
1、描述给定一个正整数数组,请求出自第一个元素开始到每个元素为终点的中位数。输入第一行:N(1<N<=1000),代表数组的长度第二行:N个整数,作为数组的元素,空格分开输出N个整数,空格隔开;第一位是数组第一个元素,第二位是前两个元素的上中位数……样例输入54 6 9 4 5样例输出4 4 6 4 5import java.uti...原创 2019-01-27 19:12:19 · 280 阅读 · 0 评论 -
第一张位运算 寒假总结
1、^运算 ,可以筛选出重复或不重复的数字,但必须是双数(A^A=0 B^0 = B)也有可能会开两个数组来比较,不一定在同一个数组中比较,灵活实现2、辅助空间的开法是int N=100;int arr[] = new int[N];int helper[] = new int[N];for(i = 0;i<N;i++){ helper[arr[i]]++;//这...原创 2019-01-21 18:13:51 · 132 阅读 · 0 评论 -
第五章 字符串专题(上)
1、判断字符串有无重复字符 class test{ public static void main(String[] args) { String inistring = "abcdaef"; System.out.println(check(inistring)); } static boolean check(String ini...原创 2019-01-31 21:32:21 · 141 阅读 · 0 评论 -
第四章 多维数组与矩阵
1、顺时针打印二维数组package org.lanqiao.algo.elementary._04matrix;/** * 顺时针打印二维数组 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 */public class Case...原创 2019-01-31 21:32:06 · 264 阅读 · 0 评论 -
第六章 数学问题(上)
1、巧用进制用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数...原创 2019-01-31 21:31:47 · 293 阅读 · 0 评论 -
第十一章 树结构(上)
基本定理:树中节点数等于边的数目加1,也等于所有节点的度数加1,,很显然嘛,因为边的个数就等于节点的度数森林为m棵不想交的树,删除一个树的根,就能得到一个森林,相反,加上那个一个节点作为树根,森林就会变成树树的核心在代码方面其实就是节点而已,任何一种结构不能只看他的逻辑结构,要看他的存储时的物理结构,而存储结构起始就只有两种,一种是顺序结构,另一种是连式结构,,以前在堆,二叉堆那里实现的树...原创 2019-03-05 16:50:13 · 120 阅读 · 0 评论