- 博客(30)
- 收藏
- 关注
原创 力扣刷题笔记:最长子串、子序列(10)
3. 最长无重复字符的子串(滑动窗口)1、使用滑动窗口法,首先尾指针加1,表示加入一个元素,然后更新最长子串长度。2、判断增加元素后原窗口是否有重复元素,找到第一个重复元素,更改首指针到该元素后。 int lengthOfLongestSubstring(string s) { int start = 0, end = 0, length = 0, num = 0; while (end < s.size()){ end++;length++; num = max(nu
2021-08-16 23:14:03
276
原创 力扣刷题笔记:二叉树遍历(9)
144. 二叉树的前序遍历(深搜、栈)递归:class Solution {public: vector<int> ans; vector<int> preorderTraversal(TreeNode* root) { dfs(root); return ans; } void dfs(TreeNode* root){ if(root==NULL) return; ans.push
2021-08-16 00:18:25
262
原创 力扣刷题笔记:二分查找(11)
33. 搜索旋转排序数组(二分查找)先判断中间点,再判断左右是否为有序数组 int search(vector<int>& nums, int target) { int n = (int)nums.size(); if (!n) return -1; if (n == 1) return nums[0] == target ? 0 : -1; int l = 0
2021-08-15 10:48:04
210
原创 力扣刷题笔记:排序(12)
常见三大排序1)快速排序1、快排随机选取基准值pivot,强转随机时间为unsigned类型作为srand种子。2、划分将基准值与末尾交换,设基准值为左值l,从左往右判断小于nums[r]则与nums[l]交换3、交换nums[r]与nums[l],将原基准值换回新基准值位置l,返回l4、左边left为l,右边right为r,进行第一轮划分后进行左右递归。快速排序的4种优化1、随机选取基准值或使用头尾中三数取中选取基准值,提升平均性能2、当范围在5-20小范围间选择插入排序,提升算法效率3
2021-08-14 22:23:21
277
原创 力扣刷题笔记:数学推导、算法(11)
172. 阶乘后的零1-4没有0,5-9有1个0,10-14有2个0,每隔5个数增加一个0,计算有多少个5即可 int trailingZeroes(int n) { int ans=0; while(n>0){ ans+=n/5; n/=5; } return ans; }191. 位1的个数1、移位运算符<<代表:需要移位的数字 << 移位
2021-08-08 17:29:46
144
原创 设计题(11)
手撕strcpy需考虑内存重叠问题,复制前判断字符串是否包含void strcpy1(char* a,const char* b){ if (a == NULL || b == NULL) return; char* temp = a; int len = strlen(b)+ 1; if (a > b && a < b + len){ temp = temp + len - 1; b = b
2021-08-07 14:27:48
178
原创 力扣刷题笔记:哈希表(10)
1. 两数之和一遍搜索,用map存已搜索过的数字 vector<int> twoSum(vector<int>& nums, int target) { map<int, int> a; vector<int> b; for (int i = 0; i < nums.size(); i++){ if (a.count(target - nums[i]) > 0){ b.
2021-08-07 11:17:39
257
原创 后端知识点链接(四):数据库、Redis、分布式
MySQL数据库面试题 MySQL数据库面试题(2020最新版)最好的前几个查询 第二高的薪水、SQL查询语句中的 limit 与 offset 的区别一条sql语句是怎么执行的? 一条SQL语句在MySQL中执行过程全解析数据库架构面试问题 拼多多面试问了数据库基础知识,今天分享出来MySQL数据更新过程? mysql 一次数据更新过程(undo redo binlog 内存缓冲池扮演了什么角色)MySQL存储引擎有哪些?Innodb和MyISAM的区别? Mysql
2021-07-12 23:39:23
473
1
原创 后端知识点链接(二):操作系统、Linux
操作系统32位系统和64位系统有什么区别? 计算机基础----32位操作系统和64位操作系统的区别C++中32位和64位有什么区别?C++那些细节–32位64位数据类型的区别虚拟内存 【Linux】Linux的虚拟内存详解(MMU、页表结构)虚拟内存页面置换算法 【操作系统 - 5】虚拟内存页面置换算法用户态和内核态怎么切换,陷入内核态的方式有哪些 操作系统用户态和内核态之间的切换过程、PCB与进程分配资源进程和线程的区别 进程、线程和协程之间的区别和联系、PCB与进程分
2021-07-12 21:52:50
1347
3
原创 力扣刷题笔记:动态规划(13)
70. 爬楼梯1、本题不能用递归,楼梯过多会超出时间限制,用动态规划2、用first和second代替动规状态数组,存储前两步楼梯的各自方案数之和3、当前等于first+second,再更新first和second int climbStairs(int n) { if(n==0) return 1; else if (n==1) return 1; else if (n==2) return 2; int first=1,seco
2021-07-11 13:39:27
276
原创 力扣刷题笔记:回溯、广搜、深搜、矩阵(18)
46. 全排列1、用二维数组代替输出数组。2、用左右标记代替标记数组,但这样的操作输出不是有序,若有序应使用标记数组。 void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){ // 所有数都填完了 if (first == len) { res.emplace_back(outpu
2021-07-09 09:05:50
327
原创 力扣刷题笔记:字符串(11)
344. 反转字符串 void reverseString(vector<char>& s) { int n = s.size(); for (int left = 0, right = n - 1; left < right; ++left, --right) { swap(s[left], s[right]); } }
2021-07-03 20:56:29
261
原创 力扣刷题笔记:数组(13)
154. 寻找旋转排序数组中的最小值 II int minArray(vector<int>& numbers) { int left=0,right=numbers.size()-1; while (left<right) { int mid=left+(right-left)/2; if (numbers[mid]<numbers[right]) right=mid;
2021-07-03 20:31:39
301
原创 后端秋招挂经
联易融提前批一面(视频)2021.6.21 17:50-18:101、自我介绍。2、平时开发用到哪些框架?3、类型转换有哪几种方式?4、dynamic_cast下行转换为何安全?(类型检查)5、vs链接选项mt和md的区别?(没听过)6、HelloWorld程序显示的整个运行过程?7、编译包含几个流程?8、虚函数如何实现?9、平时开发遇到哪些难点?10、自己做过的项目介绍。反问:1、客户端开发还是服务端?客户端。2、还有二面吗?没有...
2021-06-21 20:08:31
549
原创 力扣刷题笔记:二叉树(16)
94. 二叉树的中序遍历1、中序遍历包含递归和非递归两种做法2、递归方法包含一个隐式栈,所以也可以用栈的方法实现遍历。class Solution {public: vector<int> ans; vector<int> inorderTraversal(TreeNode* root) { dfs(root); return ans; } void dfs(TreeNode* root){
2021-01-06 23:37:15
253
原创 力扣刷题笔记:链表(21)
141. 环形链表1、用快慢指针,快指针移动两格,慢指针移动一格,如果快指针能追上慢指针,则存在环。2、快指针起始值大于慢指针一格,方便进入循环。3、快指针先判断有没有到表尾再移动,慢指针不用判断class Solution {public: bool hasCycle(ListNode *head) { if(head==NULL||head->next==NULL) return false; ListNode* first=head; ListNode*
2021-01-05 23:04:45
353
原创 力扣刷题笔记:栈和队列(13)
题型来自于剑指Offer和力扣热门100题94. 二叉树的中序遍历中序遍历包含递归和非递归两种做法,递归方法包含一个隐式栈,所以也可以用栈的方法实现遍历。class Solution {public: vector<int> ans; vector<int> inorderTraversal(TreeNode* root) { dfs(root); return ans; } void dfs(TreeNod
2021-01-05 21:42:12
278
原创 Shifting Permutations四种全排列生成算法
给定一个11到nn的排列PP,请求出这个排列根据某种顺序的后面第kk个排列。输入格式第一行是三个由空格隔开的整数n,type,kn,type,k; 第二行是nn个由空格隔开的[1,n][1,n]中的无重复整数,表示一个排列;行末可能会有空格。typetype的含义如下:当type=1type=1时,请按字典序计算; 当type=2type=2时,请按递增进位制计算; 当type...
2019-09-28 14:35:14
114
原创 考研大纲-计算机网络知识点
计算机网络体系结构概念一般认为,计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简而言之,计算机网络就是一些互连的、自治的计算机系统的集合广义观点:只要能实现远程信息处理的系统,或进一步能达到资源共享的系统,都是计算机网络 资源共享观点:以能够相互共享资源的方式互联起来的自治计算机系统的集合。 用户透明...
2019-03-25 18:13:45
1171
1
原创 考研大纲-操作系统知识点
操作系统概述操作系统(OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。它是计算机系统中最基本的系统软件。操作系统的特征并发和共享是操作系统两个最基本的特征。并发是指两个或多个事件在同一时间间隔内发生。引入进程的目的是使程序能并发执行。同一时间间隔并发和同一时刻并行的区别,多道程...
2019-03-25 18:11:58
694
转载 背包九讲(转载)
背包九讲目录第一讲 01背包问题第二讲 完全背包问题第三讲 多重背包问题第四讲 混合三种背包问题第五讲 二维费用的背包问题第六讲 分组的背包问题第七讲 有依赖的背包问题第八讲 泛化物品第九讲 背包问题问法的变化附:USACO中的背包问题前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作...
2019-03-25 15:31:32
218
原创 【算法设计与分析】(8)游戏问题(树形DP)
问题描述小李很喜欢玩计算机游戏,特别是战略游戏,但是有时他不能尽快找到解所以常常感到很沮丧。现在面临如下问题:他必须在一个中世纪的城堡里设防,城堡里的道路形成一棵无向树(连通图)。要在结点上安排最少的士兵使得他们可以看到所有边。你能帮助他吗?你的任务是给出士兵的最少数目。输入格式输入包含多组数据。每组数据表示一棵树,在每组数据中:第一行是结点的数目。接下来的几行,每行按如下...
2019-03-25 15:04:36
1872
2
原创 【算法设计与分析】(7)装载问题(01背包)
已知:n个集装箱,各个集装箱的重量和价值,轮船的载重量,输出:哪些集装箱装入轮船使得装入轮船的集装箱的总价值最大. 输入: 第一行 集装箱个数n(1<=n<=1000) 接下来N行为每个集装箱重量,价值Wi,Vi(1<=Wi,Vi<=1000) 最后一行轮船载重量Max 输出: 所有可能的组合方案(物品编号,编号从1开始)例如: 输入:5...
2019-03-24 22:23:45
1479
原创 【算法设计与分析】(6)算24点问题(回溯法)
问题描述: 给定4个正整数,用算术运算符"+”,"-”,"*”,"/”将这4 个正整数连接起来,使最终的得数恰为24。 编程任务(建议用回溯方法): 判断给定的4个数能否组成24。数据输入: 1行 4个正整数。 结果输出: 1行,如果能得到24则输出Yes,否则输出"No answer!”。例如: 输入 1 2 3 7输出 Yes将4个整数存入数组,递归的调用一个函数,用算数符连接...
2019-03-24 20:38:50
3809
原创 【算法设计与分析】(5)子集和问题(动态规划)
对于由从1到N (1 <= N <= 39)这N个连续的整数组成的集合来说,我们有时可以将集合分成两个部分和相同的子集合。 例如,N=3时,可以将集合{1, 2, 3} 分为{1,2}和{3}。此时称有一种方式(即与顺序无关)。 N=7时,共有四种方式可以将集合{1, 2, 3, ..., 7} 分为两个部分和相同的子集合:(建议用动态规划算法){1,6,7} 和 {2,3,4,5...
2019-03-24 20:13:18
2508
原创 【算法设计与分析】(4)活动调度问题(贪心算法)
题目描述:假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。第一行为活动的个数 N(1<=N<=1 000 000) 。 接下来 N 行为 Si 和 Fi (0<=Si<Fi<=2 000 000 000) ,分别代表第 i 个活动的开始时间和结束时间。活动 i 的区间段为 [Si,Fi)。 输入时间和输出时间用空格分隔。输出有...
2019-03-24 00:21:45
4755
4
原创 【算法设计与分析】(3)电缆分割问题(二分法)
题目描述:某地区即将举行区域程序设计比赛,竞赛委员会已经成立并决定举行一次最公平的竞赛, 他们决定利用星形拓扑结构来连接每个竞赛者的电脑---也即连接这些电脑到一个中心HUB上 为了达到真正的公平竞赛目的,竞赛委员会主任下令要求:每个竞赛电脑连接到中心HUB的 电缆必须是一样长的。竞赛委员会联系了一个本地的电缆老板,要求老板为他们提供一定量 的相同长度的电缆,而且要求电缆长度越长越好。通过调查...
2019-03-23 23:13:05
330
1
原创 【算法设计与分析】(2)最长公共子序列问题(动态规划)
求两个字符串的最长公共子序列的长度。输入:第一行字符串 S1第二行字符串 S2(注:字符为英文字母,大小写均可。字符串长度大于等于1 ,各不大于10000)输出:数字 M ,为最长公共子序列长度。例如:输入:BDCABAABCBDAB输出:4思路:这是一道经典的动态规划问题先初始化状态数组a的边界值,再逐位判断x[i]与y[j],如果相等,则等于...
2019-03-23 22:31:05
1871
1
原创 【算法设计与分析】(1)输水管道问题(分治法)
题目描述:某公司计划建造一条由东向西的主输水管道。该管道要穿过一个有n口水井的区域。从每口水井都要有一条输水管道沿最短路经(或南或北)与主管道相连。如果给定n口水井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各水井到主管道之间的输水管道长度总和最小的位置。注意:要求在线性时间内确定主管道的最优位置。1<=水井数量<=4 000 ...
2019-03-23 10:47:53
875
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人