摘要:
题目地址 要动态在末尾加入一个数,查询最后k个数的乘积,k不定。 维护每个数往前乘积的倍增数组再求和。 直接维护前缀积,遇到零就重置为1,因为题目求的不是一般的区间和,而是最后k个数,所以直接置1是对的。 code1 code2 阅读全文
摘要:
题目地址 实现一个数列的动态添加和查询中位数。 复杂点的话应该可以写个平衡树什么的,然后查询第k大,还可以删除数字。 简单点的话显然可以维护两个堆,一个大顶堆一个小顶堆,而且大顶堆最多比小顶堆多一个,这样查询就直接取大顶堆top元素或者两个堆top元素平均值。 添加的话,如果小于大顶堆top,就加入 阅读全文
摘要:
系统内核中自带了一些实现某些系统功能的子程序,称为系统调用。是内核提供给应用程序的接口,是操作系统的一部分。 比如C语言的库函数fread,对应调用的就是系统的系统调用read。 为了执行内核的系统功能,当进行系统调用,CPU会从用户态陷入内核态,也就是能进行一些特权操作,比如I/O操作,修改寄存器 阅读全文
摘要:
题目地址 链表部分反转 憨比解法,找到反转段的pre,反转中间段的同时记录尾节点,再接上后面一段 优秀解法,中间段的反转用头插法的思路 注意用个dummy头结点会比较方便处理边界 code1 code2 阅读全文
摘要:
题目地址 反转一个单链表,使用迭代和递归的方法 旧链表头删法,新链表头插法 维护head节点的前驱和后继 递归,对于head的链表,先递归处理head.next的链表,一开始以为要返回尾节点来指向head,但其实尾节点一直就是head.next,所以直接head.next.next指向head即可 阅读全文
摘要:
树转二叉树 左儿子右兄弟 ,即第一个儿子是左二子,第一个兄弟是右儿子,然后按层次按顺序调整每一个即可。 规范做法是三步: 加线: 同一层的兄弟按顺序加线。 去线: 保留第一个儿子,其他儿子连线删掉。 调整层次。 森林转二叉树 先将每个树转成二叉树,然后从第二棵开始,把每一棵二叉树的根都作为 前一棵的 阅读全文
摘要:
题目地址 题意:给定N K W,初始值为0,每次等概率从[1,W]中选一个数加上,大于等于K即停止,问 停止时 小于等于N的概率。 定义状态,dp[i]表示停止时数字为i的概率,所以答案就是dp[k]+dp[k+1]+...dp[n] 状态转移,因为每次只能选[1,W],而且是等概率,所以dp[i] 阅读全文
摘要:
题目地址 十进制大数转二进制。 code 阅读全文
摘要:
概念 统计语言模型是NLP的基础,是描述自然语言内在的规律的数学模型。广泛应用于各种自然语言处理问题,如语音识别、机器翻译、分词、词性标注等。 简单地说,统计语言模型就是给定一个句子W(由多个单词w1,w2,w3...组成),计算该句子可信(合理)的概率的模型,即$P(W)=P(w_1,w_2,w_ 阅读全文
摘要:
Leetcode378原题,所以一样没有数据范围...( log(max min)二分答案,然后NlogN二分每一行求出小于答案的元素个数,为了保证二分的答案在矩阵中,二分写的要和平常不太一样,最后输出的是l。 感觉这是个经典题应该有更好的方法,但是搜了一圈好像没有... code 阅读全文