- 博客(22)
- 收藏
- 关注
原创 【滑动窗口】LeetCode——713.乘积小于 K 的子数组
713. 乘积小于 K 的子数组 - 力扣(LeetCode) (leetcode-cn.com) 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。 示例 1: 输入:nums = [10,5,2,6], k = 100 输出:8 解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。 示例 2:
2022-05-06 21:00:25
1310
1
原创 AcWing——4310.树的DFS
4310. 树的DFS - AcWing题库 给定一棵 n 个节点的树。 节点的编号为 1∼n,其中 1 号节点为根节点,每个节点的编号都大于其父节点的编号。 现在,你需要回答 q 个询问。 每个询问给定两个整数 ui,ki。 我们希望你用 DFS(深度优先搜索)算法来遍历根节点为 ui 的子树。 我们规定,当遍历(或回溯)到某一节点时,下一个遍历的目标应该是它的未经遍历的子节点中编号最小的那一个子节点。 例如,上图实例中: 如果遍历根节点为 1 号节点的子树,则子树内各节点的遍历顺序为 [
2022-05-03 23:30:59
557
原创 AcWing——4309.消灭老鼠【灵活巧妙转化原问题】
4309. 消灭老鼠 - AcWing题库 思路分析 根据激光点的位置,就可以确定对其他有老鼠点(x, y)的激光发射(并且贯穿平面上的一整条直线) 最开始的暴力解法,是想去遍历整个二维平面,计算某一个点和激光点连成的直线上所有有老鼠的点都会被消灭 但是,遍历整个二维数组复杂度太高,x和y都是10410^4104级别的,遍历就是10810^8108 次 此外,某一条直线会出现经过的点不是整数点,那么该如何处理又是一个棘手的问题 原问题的巧妙转化: 根据题意,其实可以发现一个性质(激光发射一次就是一
2022-05-03 23:20:39
294
原创 【前缀和+二分、滑动窗口】LeetCode——2024.考试的最大困扰度
2024. 考试的最大困扰度 - 力扣(LeetCode) (leetcode-cn.com) 【考察点】前缀和+二分、滑动窗口 方法1:前缀和+二分 为什么会想到用二分做? 从题目的表述来看,在添加k次操作后,最长连续字符的结果一定位于区间[m,n][m, n][m,n](其中,mmm表示原先字符串中连续字符的最大长度,nnn表示字符串长度) 从结果的单调性质不难想到:针对具有单调性的区间,利用二分求出结果 通常一道题,都会正着做,通过一系列步骤求解出最终结果; 同时,也可以反着来,利用二分枚举每一个可
2022-05-03 23:16:28
670
原创 【操作系统】CPU调度算法
《Modern Operating System》、《Operating Systems:Three easy pieces》阅读笔记 1 作业周转时间【turnaround time】? 周转时间 = 完成时间 − 到达时间 也就是,每个进程从提出要求到完成的时间 2 先来先服务【FCFS】算法? 按照进程就绪的先后顺序来使用CPU 优点:实现简单,公平 缺点:在长进程后面的短进程需要等待很长的时间,不利于用户体验 三个进程A,B,C同时到达 服务的先后顺序是A->B->C,那么 周转时.
2022-04-30 18:08:36
2849
原创 【操作系统】内存管理
《Modern Operating System》、《Operating Systems:Three easy pieces》阅读笔记 1. 地址空间? 是对内存的抽象【abstraction】 是一个进程可以用于寻址内存的一套地址的集合 每个进程都有自己的独立的地址空间 为什么引入? 保护:避免用户进程直接访问内存的物理地址,避免对操作系统的破坏 它是站在运行程序的视角去看待系统的内存 2. 虚拟(逻辑)地址? 所有的用户程序所看见的都是虚拟地址,而真正的物理地址是由OS管理的 3. 动态重定位?.
2022-04-30 18:04:55
1589
原创 【计算机网络】HTTP、TCP、IP协议
TCP-IP协议 《计算机网络(原书第7版) : 自顶向下方法》 1. HTTP协议 超文本传输协议————应用层协议(提供支持的下层协议为TCP) 应用层:进程与进程间的通信 例如如下URL: http://www.someSchool.edu/someDepartment/picture.gif www.someSchool.edu:主机名 /someDepartment/picture.gif:路径名 HTTP协议定义了: 客户端如何向服务器请求页面 服务器如何将页面传送给客户端 非持久
2022-04-30 16:24:51
1114
原创 算法入门笔记【超全版本】(排序、树、图论、字符串)
算法 笔记 参考书: 算法(第四版) 优秀的算法因为能解决实际问题而变得尤为重要 高效算法的代码也可以很简单 理解某个实现的性能特点是一项有趣而令人满足的挑战 在解决同一个问题的多种算法之间进行选择时,科学方法时一种重要的工具 迭代式改进能让算法的效率越来越高 1. 排序 三大实际意义 对排序算法的分析将有助于全面理解书中比较算法性能的方法 类似的技术也能有效解决其他类型的问题 排序算法常常是我们解决其他问题的第一步 1.1. 前言 1.1.1 模板 /** 排序算法模板 **/ p
2020-12-24 22:22:13
702
原创 专业术语积累(cintinued)
耦合性 (Coupling) 也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。 动态电压调节 (dynamic voltage scaling, DVS) 是计算机系统结构中的一种电源管理
2020-10-09 16:49:09
941
原创 【笔记】为什么需要正则化?
ps: 本文文字摘自网络 在解决实际问题的过程中,我们会倾向于用复杂的模型来拟合复杂的数据,但是使用复杂模型会产生过拟合(overfitting)的风险,而正则化就是常用的减少过拟合风险的工具之一。 过拟合是指模型在训练集上误差很小,但是在测试集上表现很差(即泛化能力 [generalization ability] 差),过拟合的原因一般是由于数据中存在噪声或者用了过于复杂的模型拟合数据,而模型却过于复杂,过分地拟合噪声(noise)和异常值(outliers)。 在训练数据不够多时,或者overt.
2020-10-09 10:21:09
4470
原创 【笔记】为什么需要归一化/标准化(Normalization)
1. 归一化的作用 在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。 其中,最典型的就是数据的归一化/标准化处理。数据之间差异过大的时候就需要标准化处理。 如果不进行归一化,那么由于特征向量中不同特征的取值相差较大,会导致目标函数变“扁”。 这样在进行梯度下降的
2020-10-09 10:21:02
7196
原创 【操作系统】简单阐述程序、进程和线程的概念
1. 程序和进程的区别 首先来看一个故事: A平时因为工作忙,都是在公司食堂吃或者吃外卖。但是突然有一天下班突然心血来潮想自己做饭,于是A来到超市购物,他买了一些食材准备做一份西红柿炒鸡蛋。回到家后,A拿了出放在书架最深处的一本《家常菜食谱大全》,照着上面的方法,他就开始准备做菜了:首先先把西红柿洗干净切块,鸡蛋搅拌成蛋液,开锅热油…终于在A的不屑努力之下,一份色香味俱全的西红柿炒鸡蛋就完成了。 在上述故事中,我们可以抽象出一个简单的计算处理模型: 【程序】就是那本食谱(存储在书架上,一种物理存在,用
2020-05-09 14:59:23
641
原创 【OJ】LeetCode——101.对称二叉树
题目描述 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的。 思路 首先思考,如何判定一棵树是否对称? 先从简单的情况开始考虑 上面这颗树的左、右子节点相等,明显是一颗对称树 随着树结构的复杂,我们应如何去辨别一棵树是否对称呢 观察上面这颗树,我们从根节点出发,如果...
2020-04-18 00:11:17
400
原创 【算法】迭代实现:二叉树中序遍历
1. 中序遍历 对于中序遍历的顺序,我们先从最简单的情况观察: 对于这样一个仅含三个节点的二叉树而言,它的中序遍历的访问顺序是左—>根—>右,也就是2—>1—>3 简单概括中序遍历的规则就是:对于非空树x,先递归访问其左子树—>访问当前节点—>最后递归访问右子树 2. 递归 由于树本身就是由递归定义的,很自然地我们使用递归算法描述这样一个访问流程 class...
2020-04-11 00:11:26
1427
原创 【笔记】初读《SICP》:递归和迭代
1. 前言 递归【recursion】和迭代【iteration】是计算过程生成的两种“形状” 深入的理解对于我们理解程序的计算至关重要 (能够通过观察想象计算所产生的结果) 注:这篇文章是参考《SICP》后而写的,里面可能会出现一些lisp代码,不过后面附加了等价的c语言实现 2. 线性递归 首先,我们考虑计算一个数nnn的阶乘:n!=n∗(n−1)∗(n−2)∗...∗2∗1n! = n*(n...
2020-04-09 13:34:21
755
1
原创 【算法】选择排序和插入排序
1. 前言 本文是基于本人在《算法(第4版)》的学习过程中做的笔记 接下来会介绍两种简单的初级排序算法: 选择排序 插入排序 首先是接下来要学习的排序算法的一套通用模板 /** 排序算法模板 **/ public class Example { public static void sort(Comparable[] a) {//具体算法见下文 } private static...
2020-03-25 13:11:38
329
原创 【OJ】洛谷——P1028 数的计算
题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数nnn): 先输入一个自然数nnn(n≤1000n\leq1000n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入格式 自然数nnn,且n≤1000n\leq1000n≤1000 输...
2020-03-15 15:29:04
1899
1
原创 【OJ】LeetCode——994. 腐烂的橘子
题目描述 思路 由题目可以看出,每次从一个已经腐烂的橘子向外层蔓延,不难看出这是在模拟广度优先搜索BFS的例程 因此我们所用到的就是BFS算法 大致过程如下: 首先遍历整个网格,找到已经腐烂的橘子,加入队列; 从已经腐烂的橘子去更新相邻的橘子,直到队列为空; 若队列为空,网格上还有新鲜橘子,返回-1,否则返回总时间 问题 但在实际编程中,却遇到了两个问题 1.入队数据 入队的数据应该是此时橘...
2020-03-04 12:56:10
500
原创 【OJ】LeetCode——1302. 层数最深叶子节点的和
题目描述 给你一棵二叉树,请你返回层数最深的叶子节点的和。 示例: 输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出:15 思路 1.BFS 一直层序遍历到最深层,然后计算所有叶子节点的值 代码 /** * Definition for a binary tree node. * public class TreeNode {...
2020-03-01 15:44:11
424
原创 【OJ】LeetCode——3. 无重复字符的最长子串
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是...
2020-03-01 15:05:00
350
原创 【笔记】for循环语句的执行顺序
引言 今天在做如下题目的时候遇到了问题: 我当时的代码如下: #include<stdio.h> int main() { int n, k; double s = 0; scanf("%d", &k); for(n=1; s<=k; n++){ s += 1.0/n; } printf("%d", n); return 0; } 问题 ...
2020-03-01 08:15:37
628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅