算法与数据结构
文章平均质量分 61
专注于数据结构,和算法知识。 后期分享各种刷题新的
什么都只会一点点
什么都只会一点点
展开
-
归并算法
我们这里不讲归并函数的基础,如果你暂时还不知道归并函数的话,可以看这篇文章理解。自顶向下归并算法的图文讲解 不过值得注意的是,这里面的算法有些问题,至少我的GO语言,没有能够重复结果。我贴一下我的 merge算法//合并 [left...mid] [mid+1...right]func mergeArray(arr []int, left int,mid int, ...原创 2018-09-04 17:53:23 · 3263 阅读 · 0 评论 -
【数据结构】c语言链表实现报数问题
#include<stdio.h>#include<malloc.h>void main(){ int i,j, k,n,m; struct baoshu { int number; struct baoshu *next; }*p,*q,*head,*temp; printf("输入人数"); scanf("%d原创 2017-04-01 13:26:32 · 6536 阅读 · 0 评论 -
数据结构C语言狐狸抓兔子链表实现
刚开始学习数据结构,老师布置了一道题,自己用代码实现了。第一次用博客,排版这些也不怎么会。希望能和数据结构新手一起学习,也希望大神指点指点。题目如下 围绕着山顶有10 个圆形排列的洞。狐狸要吃兔子, 兔子回答说: “可 以, 但必须找得到我, 我就藏在这10 个洞中。你先到1 号洞找, 第二 次隔1 个洞( 即3 号洞) 找, 第三次隔2 个洞( 即6 号洞) 找, 以后 如此原创 2017-03-31 09:08:58 · 9639 阅读 · 1 评论 -
【P1002】P1002 过河卒
题目题目描述输入输出格式输入格式:输出格式:输入输出样例输入样例#1:输出样例#1:说明分析DFSDP题目题目描述棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,...原创 2018-07-15 19:46:13 · 1521 阅读 · 0 评论 -
求最大公因数和最小公倍数 java
题目:给出两个数字a和b求出他的最大公因数和最小公倍数。解析:看到这题的时候一开始我还是觉得挺简单的,但是仔细一想却无从下手,于是乎我只能百度抠破脑袋终于想出来了 最小公倍数的公式为 : (a∗b)/(最大公倍数)(a∗b)/(最大公倍数)(a*b)/(最大公倍数)所以我们只需要求出最大公因数就可以求出最小公倍数了一、辗转相除法(欧几里得算法)证明就需要大家去百...原创 2018-03-27 17:11:35 · 11389 阅读 · 0 评论 -
幂运算取模
快速幂也就是我们求解ab&nbsp;mod&nbsp;kab&nbsp;mod&nbsp;ka^ b \ mod \ k 这种类型的式子会用1. 解法一 暴力求解暴力求解也就是类似下面代码 for(int i = 0;i&lt;b;i++) { a *=a; } a%=k; 这种方法是不可取的 例如: 21003%&nbsp;3...原创 2018-03-29 23:04:14 · 5371 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路解析这是一套字符串处理的题目,虽然我们有字符串处理的函数,但我们最好不要用那些,自己把这些写出来会更好一点。 方案一(利用自带的函数)function replaceSpace($st...原创 2018-07-15 10:51:32 · 1084 阅读 · 0 评论 -
重建二叉树
今天刷题的时候碰到这道二叉树的题,这是数据结构中的重点知识,但由于学了已经一年多了,很多东西已经遗忘,今天把它拾起来。题目基础知识铺垫先序遍历中序遍历后序遍历题解题目输入某二叉树的先序遍历和中序遍历的结果,请重建出该二叉树。假设输入的先序遍历和中序遍历的结果中都不含重复的数字。例如输入先序遍历序列{1,2,4,7,3,5,6,8}和中序遍历...原创 2018-07-18 21:01:54 · 4431 阅读 · 4 评论 -
用两个栈实现队列
在讲解题之前我们先回顾一下栈和队列的定义。栈的是 FILO 先进后出 队列是 FIFO 先进先出题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路这题匝一看,不知道题目什么意思。 其实这题就是让我们用两个栈,一个来模拟队列的入队列的操作,一个拿来做出队列的操作。然后我们栈的方式时 FILO 的方式 而队列是 FIFO 的...原创 2018-07-19 09:51:35 · 1219 阅读 · 0 评论 -
旋转数组中的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路简单题,不用思路解答java 版方法一:暴力求解 public int minNumbe...原创 2018-07-20 09:52:24 · 1073 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39思路这题的思路就知道知道 斐波那契数列 的推导公式就行,F(n) = F(n-1)+F(n-2) 的公式 题解java 代码 方法一:递归 public int Fibonacci(int n) { if(n<2){ ...原创 2018-07-21 09:05:19 · 1035 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路这也是一道 斐波那契数列类似的题目,解法也就是前一个博客的题解。 因为只能一次跳两个台阶,所以 F(n) = F(n-1)+F(n-2)方法一:递归public class Solution { public int JumpFlo...原创 2018-07-22 08:54:42 · 985 阅读 · 0 评论 -
变态跳台阶
思路:这题明显比前面一提要难得多,关键是跳的级数不确定了。 这题一开始一看我就知道可以从最底下,深搜到顶。(因为牛客对算法复杂度要求不是太高,要是这题在洛谷绝对GG)深搜模板了解下;public void dfs(int i, int k) { if(i>k)return; if(i==k) { sum++; ...原创 2018-07-22 10:10:00 · 1004 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?public class Solution { public int RectCover(int target) { if(target<=3)return target; int pre = 1; ...原创 2018-07-24 09:19:45 · 1029 阅读 · 0 评论 -
数的整次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。、思路这就是一道快速幂的题目,之前写过快速幂的思路查看原文 大家可以看一下public class Solution { public double Power(double base, int exponent) { int i =...原创 2018-07-26 08:37:09 · 1047 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。思路这题蛮新颖的,想了蛮久,都没想出比较好的做法。看了下别人的答案,才知道该怎么做。这一题的用意就是让我们把类似 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;6 变成 6-&gt;5-&gt;4-&gt;3-&gt;2-&gt;1我们用head 表示当前节点,n原创 2018-08-03 18:29:47 · 984 阅读 · 0 评论