算法 数据结构
Snoopy_Dream
这个作者很懒,什么都没留下…
展开
-
[C++算法] - 二叉树《21道常见的面试题》
自己动手写代码,记录中间出现的错误。这个网址不错https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%A0%91.md目录中序遍历!先序遍历后序遍历按层遍历不分行打印(deque)分行打印(queue)Z字遍历(两个栈)Mo...原创 2019-10-21 15:49:54 · 898 阅读 · 0 评论 -
[算法] - c++笔试中algorithm常用函数(STL)
你有没有被面试官说过:你这个STL了解的不够啊。。有没有看到同样是C++为什么别人的代码还能那么少。。。好吧玄机都在#include<algorithm>里面。官方函数使用方法:http://www.cplusplus.com/reference/algorithm/考试用#include<bits/stdc++.h>万能头文件好了常用功能:交换swap,逆序rev...原创 2019-04-09 18:02:11 · 3159 阅读 · 0 评论 -
[C++算法] - 数组和矩阵《21道常见的题目》
千里之行,始于足下;代码还是得自己写,才能记忆深刻,这是一个需要累积时间的过程,不是说你在图书馆待上一周,看着书就会了的事情。也由此,在此总结数组合矩阵相关的问题,自己写代码实现(c++)目录1. 快速排序2. 归并排序3. 正数数组中累计和为k的 最长子数组长度 (双指针弄开头)4. 累计和为k的 最长子数组长度 (k==arr[j+1,m]->sum...原创 2019-10-21 15:50:00 · 1460 阅读 · 0 评论 -
面试题(c/c++)
https://blog.csdn.net/u013162035/article/details/78308140https://blog.csdn.net/u013457167/article/details/82814413目录1,C++中指针和引用的区别1.1int *ptr=(int *)(&a+1)2.堆和栈的区别3.变量的声明和定义有什么区别4.s...转载 2018-11-01 19:15:27 · 932 阅读 · 0 评论 -
动态规划总结
概念:动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化(en:memoization)存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。套路:1)找到什么可变参数可以代表一个递归状态, 也就是哪些参数一旦确定, 返回值就确定了【walk(int N, int cur, int ...原创 2019-08-18 22:48:51 · 165 阅读 · 0 评论 -
C++ 笔试——常见输入和输出
估计有很多人和我的感受一样,笔试的时候,输入就耗费了很长时间,有几次甚至因为输入的问题,核心思想都想出来了,还是gg了。故此在这里总结c++中常见的输入。目录基础:cin / cin.getline / cin.get / getline(string)简单用法零、',' 作为输入分隔符一、以空格为间隔的数组二、多组测试数据(while(cin>>...))...原创 2019-08-11 17:41:24 · 6229 阅读 · 1 评论 -
C++ 解疑(**与引用)
目录1.C++ 值传递、指针传递、引用传递详解2.C++函数的传入参数是指针的指针(**指向地址的地址)的详解1.C++ 值传递、指针传递、引用传递详解#include<iostream>using namespace std;//值传递 void change1(int n){ cout<<"值传递--函数操作地址"&l...原创 2019-10-15 19:49:57 · 286 阅读 · 0 评论 -
[C++算法] - 树形dp套路
树形dp套路 树形dp套路使用前提: 如果题目求解目标是S规则,则求解流程可以定成以每一个节点为头节点的子树在S规则下的每一个答案,并且最终答案一定在其中https://www.cnblogs.com/mhpp/p/6628548.html这其中是一些其他的例子,抽空可以看看。目录1. 树形dp套路题目一 :二叉树节点间的最大距离问题题目二 :派对的最大快乐值 ...原创 2019-03-20 16:04:26 · 1405 阅读 · 0 评论 -
[算法] - Moris遍历
目录1. 封神的地方2. 实质3. 具体细节:4. morris遍历时间复杂度的证明5. 先序,中序,后序6. 代码Morris遍历 ,一种遍历二叉树的方式时间复杂度O(N),额外空间复杂度O(1) 1. 牛逼的地方普通遍历,因为本身树没有往回指的指针,所以需要递归用递归栈或者自己压栈的方式,遍历树结构,额外空间复杂度为O(h),h为二叉树的高度。这...原创 2019-01-27 15:41:24 · 1001 阅读 · 1 评论 -
AI算法 求职经验交流会
一、简历方面写简历,注意对口。比方说兴趣技能,你要尽量写的对你找的工作有加分的。写项目经历等,要注意不要写大,最重要的是要将输出量化,你通过这个写了篇论文?或者达到怎么样的精度和成绩中英文和数字之间 空一格 二、笔试非常好的福利:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E7%AE%97%E6%B...原创 2018-12-27 22:42:08 · 253 阅读 · 0 评论 -
[算法] - 判断一个链表是否为回文结构( 额外空间复杂度达到O(1))
【 题目】 给定一个单链表的头节点head, 请判断该链表是否为回文结构。【 例子】 1->2->1, 返回true; 1->2->2->1, 返回true; 15->6->15, 返回true;1->2->3, 返回false。【 例子】 如果链表长度为N, 时间复杂度达到O(N), 额外空间复杂度达到O(1)额外空间复杂度达到...原创 2019-01-04 10:21:44 · 802 阅读 · 1 评论 -
[算法] - 将单向链表按某值划分成左边小、 中间相等、 右边大的形式 ( 额外空间复杂度请达到O(1) )
将单向链表按某值划分成左边小、 中间相等、 右边大的形式【 题目】 给定一个单链表的头节点head, 节点的值类型是整型, 再给定一个整数pivot。 实现一个调整链表的函数, 将链表调整为左部分都是值小于pivot的节点, 中间部分都是值等于pivot的节点, 右部分都是值大于pivot的节点。【 进阶】 在实现原问题功能的基础上增加如下的要求【 要求】 调整后所有小于pivot的...原创 2019-01-04 15:17:12 · 515 阅读 · 2 评论 -
[算法] - 复制含有随机指针节点的链表【 额外空间复杂度O(1)】
复制含有随机指针节点的链表【 题目】 一种特殊的单链表节点类描述如下class Node { int value; Node next; Node rand; Node(int val) { value = val;}}rand指针是单链表节点结构中新增的指针, rand可能指向链表中的任意一个节点, 也可能指向null。 给定一个由Node节点类型组成的无环单链表...原创 2019-01-04 16:16:57 · 532 阅读 · 0 评论 -
[算法] - 两个单链表相交的一系列问题【链表中最难的题目】
两个单链表相交的一系列问题【 题目】 给定两个可能有环也可能无环的单链表, 头节点head1和head2。 请实现一个函数, 如果两个链表相交, 请返回相交的 第一个节点。 如果不相交, 返回null【 要求】 如果两个链表长度之和为N, 时间复杂度请达到O(N), 额外空间复杂度请达到O(1)。前言:肯定不可能一个有环,一个无环,然后相交了。首先,我们判断是有环还是无环,如果...原创 2019-01-04 17:17:08 · 794 阅读 · 2 评论 -
[算法] - insert interval Vector模板类的应用
问题描述Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).You may assume that the intervals were initially sorted according to their start times....原创 2018-12-26 10:27:40 · 577 阅读 · 0 评论 -
[算法] - c++ list, vector, map, set ,hashmap, deque区别(一)vector
list不能随机访问,但vector可以,vector不能删除头部,而且插入删除的效率低。List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速...转载 2018-12-26 11:54:50 · 1071 阅读 · 0 评论 -
递归编程思想 深度剖析
https://blog.csdn.net/sinat_38052999/article/details/73303111这个为递归的一篇好文,可与本文结合的看。递归最主要的有三点:形参、返回值、basecase和更新,递归调用汉诺塔问题折纸问题请把一段纸条竖着放在桌子上, 然后从纸条的下边向上方对折1次, 压出折痕后展开。此时折痕是凹下去的, 即折痕突起的方向指...原创 2019-05-09 10:51:49 · 343 阅读 · 0 评论 -
[算法] - 哈希函数 + RandomPool + 布隆过滤器 + 一致性哈希原理 + 并查集结构
目录哈希函数哈希函数的作用:通过 f 哈希函数使得数据变均匀分布,离散化哈希表的实现:扩容:笔试tricks:在C++里面,不怎么用哈希表,而是使用int[1000]这样的数组,时间复杂度会低。在刷题的过程中只要找到O(N*logN)就足够了,N不可能过大,不用找O(N))根据数据范围,来找时间复杂度大概多大就过分了。C++里面1s可执行10^8~9操作。不能超...原创 2019-01-07 17:25:38 · 696 阅读 · 0 评论 -
[算法] - Manacher算法【 O(N) 最长回文子串的长度】
目录Manacher算法解决的问题字符串str中, 最长回文子串的长度如何求解?如何做到时间复杂度O(N)完成?1. 大体理解:2. 思路剖析3. 时间复杂度4. 详细代码Manacher算法解决的问题字符串str中, 最长回文子串的长度如何求解?如何做到时间复杂度O(N)完成?1. 大体理解:9是指回文子串多的长度常用的方法:字符串的问题,...原创 2019-01-15 11:56:46 · 290 阅读 · 0 评论 -
[算法] - 窗口内最大值更新结构【重要】
目录1. 由一个代表题目, 引出一种结构2. 窗口内最大值更新结构3. 具体代码4. 上述程序中所学1. 由一个代表题目, 引出一种结构【 题目】有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边, 窗口每次 向右边滑一个位置。例如, 数组为[4,3,5,4,3,3,6,7], 窗口大小为3时:[4 3 5]4 3 3 6 74[3 5 4]3 3 6...原创 2019-01-15 21:30:42 · 311 阅读 · 0 评论 -
单调栈结构(重要)+应用(指标A问题)
在数组中想找到一个数,左边和右边比这个数小、且离这个数最近的位置。如果对每一个数都想求这样的信息, 能不能整体代价达到O(N)? 需要使用到单调栈结构。当有重复值的时候,我们将重复的值的index,放到一起,弹出的时候一起弹出。整体逻辑:用一个栈辅助,栈里存着索引,对应的值是单调的,从栈顶往下是递减的(两边找最近的比他小的数)。如果说stack.top<arr[i],弹出此...原创 2019-05-08 16:14:39 · 547 阅读 · 0 评论 -
[算法] - 二叉树的层宽 (队列 双向链表 HashMap 以及 编程感悟 )
基石宽度优先用队列,深度优先用栈。二叉树的宽度,指的是最宽的那一层的个数。例子 1 2 34 5 6 7辅助数据:一个队列 LinkedList双向链表<Node> queue(先进先出)。队列的逻辑:1进来,弹出,进来23,出2,进45,出3进 6,(就是弹出的...原创 2018-12-20 12:03:09 · 190 阅读 · 0 评论