
编程感悟
主要记载到明年找工作之前的学习感悟。
Snoopy_Dream
这个作者很懒,什么都没留下…
展开
-
单调栈结构(重要)+应用(指标A问题)
在数组中想找到一个数,左边和右边比这个数小、且离这个数最近的位置。如果对每一个数都想求这样的信息, 能不能整体代价达到O(N)? 需要使用到单调栈结构。当有重复值的时候,我们将重复的值的index,放到一起,弹出的时候一起弹出。整体逻辑:用一个栈辅助,栈里存着索引,对应的值是单调的,从栈顶往下是递减的(两边找最近的比他小的数)。如果说stack.top<arr[i],弹出此...原创 2019-05-08 16:14:39 · 579 阅读 · 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 · 332 阅读 · 0 评论 -
[算法] - Manacher算法【 O(N) 最长回文子串的长度】
目录Manacher算法解决的问题字符串str中, 最长回文子串的长度如何求解?如何做到时间复杂度O(N)完成?1. 大体理解:2. 思路剖析3. 时间复杂度4. 详细代码Manacher算法解决的问题字符串str中, 最长回文子串的长度如何求解?如何做到时间复杂度O(N)完成?1. 大体理解:9是指回文子串多的长度常用的方法:字符串的问题,...原创 2019-01-15 11:56:46 · 320 阅读 · 0 评论 -
[算法] - 哈希函数 + RandomPool + 布隆过滤器 + 一致性哈希原理 + 并查集结构
目录哈希函数哈希函数的作用:通过 f 哈希函数使得数据变均匀分布,离散化哈希表的实现:扩容:笔试tricks:在C++里面,不怎么用哈希表,而是使用int[1000]这样的数组,时间复杂度会低。在刷题的过程中只要找到O(N*logN)就足够了,N不可能过大,不用找O(N))根据数据范围,来找时间复杂度大概多大就过分了。C++里面1s可执行10^8~9操作。不能超...原创 2019-01-07 17:25:38 · 750 阅读 · 0 评论 -
[算法] - 两个单链表相交的一系列问题【链表中最难的题目】
两个单链表相交的一系列问题【 题目】 给定两个可能有环也可能无环的单链表, 头节点head1和head2。 请实现一个函数, 如果两个链表相交, 请返回相交的 第一个节点。 如果不相交, 返回null【 要求】 如果两个链表长度之和为N, 时间复杂度请达到O(N), 额外空间复杂度请达到O(1)。前言:肯定不可能一个有环,一个无环,然后相交了。首先,我们判断是有环还是无环,如果...原创 2019-01-04 17:17:08 · 843 阅读 · 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 · 545 阅读 · 0 评论 -
[算法] - 将单向链表按某值划分成左边小、 中间相等、 右边大的形式 ( 额外空间复杂度请达到O(1) )
将单向链表按某值划分成左边小、 中间相等、 右边大的形式【 题目】 给定一个单链表的头节点head, 节点的值类型是整型, 再给定一个整数pivot。 实现一个调整链表的函数, 将链表调整为左部分都是值小于pivot的节点, 中间部分都是值等于pivot的节点, 右部分都是值大于pivot的节点。【 进阶】 在实现原问题功能的基础上增加如下的要求【 要求】 调整后所有小于pivot的...原创 2019-01-04 15:17:12 · 554 阅读 · 2 评论 -
[算法] - 判断一个链表是否为回文结构( 额外空间复杂度达到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 · 911 阅读 · 1 评论 -
递归编程思想 深度剖析
https://blog.youkuaiyun.com/sinat_38052999/article/details/73303111这个为递归的一篇好文,可与本文结合的看。递归最主要的有三点:形参、返回值、basecase和更新,递归调用汉诺塔问题折纸问题请把一段纸条竖着放在桌子上, 然后从纸条的下边向上方对折1次, 压出折痕后展开。此时折痕是凹下去的, 即折痕突起的方向指...原创 2019-05-09 10:51:49 · 373 阅读 · 0 评论 -
AI算法 求职经验交流会
一、简历方面写简历,注意对口。比方说兴趣技能,你要尽量写的对你找的工作有加分的。写项目经历等,要注意不要写大,最重要的是要将输出量化,你通过这个写了篇论文?或者达到怎么样的精度和成绩中英文和数字之间 空一格 二、笔试非常好的福利:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E7%AE%97%E6%B...原创 2018-12-27 22:42:08 · 277 阅读 · 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 · 1156 阅读 · 0 评论 -
[算法] - 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 · 626 阅读 · 0 评论 -
[算法] - 二叉树的层宽 (队列 双向链表 HashMap 以及 编程感悟 )
基石宽度优先用队列,深度优先用栈。二叉树的宽度,指的是最宽的那一层的个数。例子 1 2 34 5 6 7辅助数据:一个队列 LinkedList双向链表<Node> queue(先进先出)。队列的逻辑:1进来,弹出,进来23,出2,进45,出3进 6,(就是弹出的...原创 2018-12-20 12:03:09 · 209 阅读 · 0 评论