
算法
冬夏夏冬
这个作者很懒,什么都没留下…
展开
-
C++实现斐波那契数列计算过程
裴波那契数列C++实现斐波那契数列计算过程一、裴波那契数原理:二、图形表示:三、代码实现:C++实现斐波那契数列计算过程第一次写博客,只是为了记录学习过程中碰到的问题。一、裴波那契数原理:f(0)=f(1)=1;在n大于等于2时:二、图形表示:为了方便理解我做了下面这个表格,以详细表示计算过程中数值的传递关系。约定如下:表中每一行都表示一次计算;初始状态:f(0)=f...原创 2018-12-24 16:55:44 · 4109 阅读 · 0 评论 -
背包问题
文章目录0-1背包完全背包0-1背包背包容量C,物品代价为w[i] 价值为v[i],所有物品只可使用一次,求最大收益./* /* f(i,c)代表使用物品[0,...,i]填充容量c所获得的最大收益 第i件物品可以选择用或者不用 1.不用: f(i,c) = f(i-1,c) 2.用: f(i,c) = f(i-1,c-w[i])+v[i] ...原创 2019-08-19 18:53:47 · 218 阅读 · 0 评论 -
二叉树非递归前序,中序,后序遍历,层序遍历,之字遍历
#include <iostream>#include <string>#include <vector>#include <algorithm>#include <stack>#include <queue>using namespace std;struct TreeNode{ char val; Tr...原创 2019-08-13 20:54:13 · 188 阅读 · 0 评论 -
字节跳动春招笔试题万万没想到
万万没想到之聪明的编辑原题目链接长度大于等于3,才可能出现三个连续相同的情况长度大于等于4,才可能出现AABB情况针对这两种情形,只需要将左边的指针回退一步即可.在这里插入代码片```#include <vector>#include <string>#include <iostream>using namespace std;...原创 2019-06-28 23:01:28 · 674 阅读 · 0 评论 -
哈夫曼编码
//File Name: node.h#ifndef _NODE_H#define _NODE_H#include <iostream>#include <string>#include <set>#include <map>using namespace std;class Node{ public: friend cla...原创 2019-04-26 19:31:10 · 235 阅读 · 0 评论 -
剑指offer笔试题31~35
31.连续子数组的最大和题目表述: 输入一个整形数组,有正数也有负数。数组中一个或多个连续的整数构成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 {6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。简单的思路一: 枚举出所有的子数组,时间复杂度为O(n*n)class Solution {public: int Fi...原创 2019-04-03 21:51:55 · 196 阅读 · 0 评论 -
剑指offer笔试题26~30
26.复杂链表的复制题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)正确的思路: 首先对每个结点进行复制,并插入到原有结点的后面。第二步再逐个将新结点的特殊指针指向原有结点特殊指针所指位置的下一个位置。第三步将两个链...原创 2019-03-25 19:49:14 · 161 阅读 · 0 评论 -
剑指offer笔试题21~25
21.包含min函数的栈题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路一: 要使栈有min函数,那就需要有一个结构能够存储这个最小值,同时还需要保存次最小值,再次最小值。很容易想到在一开始入栈的时候就保存一个最小值,接下来每次push都要进行value与min的比较。所有的最小值也许要有序排列,保证可以做到连续的pop最...原创 2019-03-17 15:12:57 · 207 阅读 · 0 评论 -
常见排序算法汇总
以下均为个人理解,如有错误请指出,谢谢。一、冒泡排序所谓冒泡,就是将较大值往最下面扔,相对应的较小值就会逐步上移。这就会涉及到整个序列中相邻两个元素的比较。第一轮:共有n 个数值,需要比较(n-1)次,找到了最大值。第二轮:剩下前(n-1)个数值,需要比较(n-2)次,找到次最大值。…第(n-1)轮:剩下前2个数值,需要比较1次,找到最小值。稳定性: 在以下两段程序中,可以看到v...原创 2019-03-19 20:01:32 · 185 阅读 · 0 评论 -
剑指offer11-15笔试题
13.数值的整数次方题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。完善的思路1:(1) 判断非法输入:底数为0,指数为负数(2) 指数为正,直接循环计算(3) 指数为负,先按照其绝对值计算结果,再取反(4) 判断一个 浮点数等于零 由于计算机精度问题不能直接用 double = = 0 ,可通过一个 极小的范...原创 2019-03-07 15:46:59 · 200 阅读 · 0 评论 -
我的笔试题
题目一: 一棵类似于二叉堆的满二叉树,根节点的编号为1。对于编号i的节点,其左儿子的编号为2i,右儿子的编号为2i+1。从根节点开始遍历,每经过一个节点,都可以加上或者减去该节点的编号的数值。要求:(1) 从终端输入两个数n,k;一共经过k个节点的结果刚好等于n。(2) 以此输出经过的节点编号,及其运算符。例如:输入: $ 3 2输出: $ 1 +2 +题目二: 一个二维空间的...原创 2019-03-14 21:28:44 · 624 阅读 · 0 评论 -
剑指offer笔试题16~20
16.反转链表题目描述: 输入一个链表,反转链表后,输出新链表的表头。思路:(1) 输入空链: 直接返回NULL(2) 只有一个结点: 返回原头节点(3) 多个结点: 针对普通情况进行分析,假设有:i -&amp;amp;amp;gt; j -&amp;amp;amp;gt; k,如果想要反转这段链表,首先需要j - &amp;amp;amp;gt; i,但是这样的话节点k就会丢失,因此需要三个指针来分别指向连续的三个结点。c原创 2019-03-09 20:46:17 · 195 阅读 · 0 评论 -
剑指offer笔试题6~10
6.重建二叉树题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路1: 前序遍历序列的开头a[0]必定是根结点,相应的在中序遍历序列中位于a[0]之前的元素在a[0]的左子树上,位于a[0]之后的...原创 2019-03-08 19:52:59 · 162 阅读 · 0 评论 -
剑指offer笔试题3~5
在这里记录下66道题的思路及代码,仅供自己回顾。1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。**思路1:**因为二维数组本身就是上下左右均排序的,所以可以从右上角开始比较。如果a[row][col] &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;g原创 2019-02-28 21:57:39 · 274 阅读 · 0 评论 -
单链表的归并排序
#include <iostream>#include <string>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode* createList(){ ...原创 2019-08-28 15:56:21 · 319 阅读 · 0 评论