算法(四)--双指针 && 滑动窗口 && 数组
双指针 当需要多次重复的遍历数组时,使用指向头尾的双指针并同时移动它们可以大大减少重复遍历的次数。 双指针的作用就在于可以跳过无用解。通过使用两个指针(通常一个指向数组的开始,另一个指向数组的末尾)并根据一定的条件同时移动这两个指针,可以有效地在遍历数组时减少不必要的重复遍历,从而提高算法的效率。此外,双指针技术还可以帮助跳过那些不满足特定条件的无用解,进一步优化搜索或计算过程。 两数之...
双指针 当需要多次重复的遍历数组时,使用指向头尾的双指针并同时移动它们可以大大减少重复遍历的次数。 双指针的作用就在于可以跳过无用解。通过使用两个指针(通常一个指向数组的开始,另一个指向数组的末尾)并根据一定的条件同时移动这两个指针,可以有效地在遍历数组时减少不必要的重复遍历,从而提高算法的效率。此外,双指针技术还可以帮助跳过那些不满足特定条件的无用解,进一步优化搜索或计算过程。 两数之...
分享在存在多个类似的操作或运算时的封装方式: 函数封装器和lambda表达式 unordered_map<string,function<int(int,int)>> map={ {"+",[](int a,int b){return a+b;}}, {"-",[](int a,int b){return a-b;}}, ...
二叉树 二叉树基础及其常见类型 二叉树的重要性将贯穿开发始终。很多实用且复杂的数据结构式基于二叉树的,比如红黑树(二叉搜索树)、多叉树、二叉堆、图、字典、并查集,二叉树是非常重要的基础。如果你想掌握上面的数据类型,掌握二叉树的重要性不言而喻。 同时很多算法思想可以被抽象为二叉树。常见的是回溯算法、动态规划,其过程可以视为二叉树的深度遍历。 满二叉树 中间节点都有左右子节点。深度...
链表 tip:链表旋转操作如果是自己的size整数倍,等于没有操作。所以需要先把旋转次数对size取余。 time %= size LRU缓存机制 Leetcode 146 使用双向列表和哈希表: 双链表存储一个节点被使用(get或者put)的时间戳,且按最近使用时间从左到右排好序,最先被使用的节点放在双链表的第一位,因此双链表的最后一位就是最久未被使用的节点; 哈希表存储ke...
前言 本心得会将常见的算法解题思路按模块进行拆分讲解。模块分别是:双指针、链表、二叉树、回溯、二分查找、栈堆、贪心、动态规划、图论。斯认为新接触到一道算法题时,可以尝试将其识别为某模块的题目,应用相应模块的通用解法进行解题。但具体问题具体分析,通用解法只是提供一个启发,需要我们在不断的刷题中磨砺手感和技巧。 回溯算法 回溯算法本质上是暴力穷举算法,和我们常见的深度搜索算法DFS算法非常...
本篇文章用来记录阅读Linux多线程服务端编程的学习笔记,采用知识点加范式的形式来记录。Item记录范式,知识点直接记录。 Item1:不要在构造函数中泄露this指针 Item2:构建线程安全的析构函数是困难的且重要的 作为数据成员的mutex不能保护析构 share_ptr/weak_ptr 多线程下资源资源管理神器 在说明share_ptr的底层时,最重要的一点就是proxy思想...
ubuntu服务存放路径 /etc/systemd/system/myservice.service 服务文件配置 [Unit] Description=This is myservice [Service] Type=simple ExecStart=/bin/bash -c '/usr/bin/python /home/test.py' Restart=on-failure [In...
docker pull 代理设置 step1:修改docker配置文件 sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf 修改内容如下: [Service] Environment="HTTP_PROXY=http://ip:7890" Environment="HTTPS_PROXY=http://ip:7890...
9月份OKR工作内容介绍 9月份工作周期的开发内容主要是完成网络子系统中关于unix stream socket的重构。主线上的原版关于unix stream socket的实现有些简陋,没有那个握手过程还有状态转化,因此需要进行重构。目前基本上完成stream socket的重构,首先是重构了stream socket的设计,采用类似tcp状态机的设计来实现stream socket,使...
network benchmark tool unix socket abstract address space 进程基于channel的通信