随笔分类 -  算法习题训练

摘要:一.斐波那契数列 写入一个函数,输入一个数字n,求斐波那契数列的第n项,该数列的定义如下: F(0)=0,F(1)=1 F(N)=F(N-1)+F(N+2),其中N>1 斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需取模1e9+7 解决方案: 1.递归法(分治) 原理 阅读全文
posted @ 2020-09-18 21:08 文牧之 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一.二叉树的镜像 请完成一个函数,输入一个二叉树,要输出它的镜像 例如: 解决方案:通过分析上面的例子我们可以得到二叉树的镜像其实就是每个节点的左右节点交换位置后的二叉树,所以我们可以遍历二叉树的同时交换左右子节点的位置即可 代码: TreeNode test(TreeNode root){ if( 阅读全文
posted @ 2020-09-16 21:51 文牧之 阅读(2) 评论(0) 推荐(0) 编辑
摘要:一.合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的 解决方案:新建两个节点,一个用于记录开始位置,一个用于移动排序 ListNode help=new ListNode();//新建节点,用于移动排序,相当于一个中间变量 ListNode end=hel 阅读全文
posted @ 2020-09-15 21:14 文牧之 阅读(1) 评论(0) 推荐(0) 编辑
摘要:1.替换空格 实现一个函数,把字符串s中的每一个空格替换成“%20” 解法:调用String中的replace和replaceAll方法都可以完成 s=s.replace(" ","%20");//replace方法的两个输入参数都是字符串 s=s.replaceAll("\\s","%20");/ 阅读全文
posted @ 2020-09-14 21:02 文牧之 阅读(2) 评论(0) 推荐(0) 编辑
摘要:一.找出数组中重复的数 在长度为n的数组nums里面的所有数字都在0~n-1的范围内,数组中某些数字是重复的,但不知道是哪几个,也不知道重复了几次,请找出数组中任意重复的数字 解法: 1.暴力解法:循环遍历逐个比较,我们可以利用两次循环找出一对相等的数返回 //双层循环遍历 for(int j=0; 阅读全文
posted @ 2020-09-14 20:09 文牧之 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一.解决方法: 在相关的书籍中描述了一个递归的解决方法,其算法思想如下: 1.从前序序列中第一个元素开始,取出一个元素,索引后移一位(preIndex+1) 2.根据选择到的数值创建一个树节点newNode 3.然后查找所选的数值在中序序列中的索引,用inIndex存储 4.递归调用此方法为inIn 阅读全文
posted @ 2020-09-08 19:46 文牧之 阅读(16) 评论(0) 推荐(0) 编辑
摘要:优化算法思路: 1.Sunday算法关键思想 通过解析传统Sunday算法我发现它实现跳转的关键思想在于第二步,我们深入解析下第二步的原理: we should working hard work h为什么要和work中的元素逐个比较?我们可以这样理解: 1) 当h和w比较时,我们可以确定houl和 阅读全文
posted @ 2020-06-26 15:13 文牧之 阅读(21) 评论(0) 推荐(0) 编辑
摘要:根据上面的步骤我写了一个在一个字符串中查找另一个字符串的算法 java实现代码如下: public int Sunday(String haystack, String needle) { int hayLen = haystack.length();//主串长度 int nLen = needle 阅读全文
posted @ 2020-05-11 20:24 文牧之 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一.什么是Bloom过滤器? 其原理是: 1.当一个元素被加入集合,通过K个hash函数将这个元素映射为一个位数组中的K个点,把他们置为1。 2.检索时,我们只需要查看我们需要判断的元素通过hash函数计算映射到的这些点是不是都是1来判断:若都为1,则说明可能存在(存在交叉映射的可能)。但只要有一个 阅读全文
posted @ 2020-04-13 11:44 文牧之 阅读(9) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示