自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只精品西红柿的进化过程

默默努力的程序媛

  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 Leetcode 4.21

用vector去存罗马数字symbol对应的数值val,如果val比num小,则num -= val;与题目3相同,注意题目:不重复的四元组!这个题可以遍历数组,固定一个元素,target - nums[i],就变成了3数之和的解法。可以排列组合的题目都可以首先联想到全排列,递归时先判断是否符合递归终止条件,不符合则依次加当前电话号码位置对应的字母,加完后递归,用unordered_map去存罗马数字对应的数值,分情况讨论,把所有情况都列出来即可。需要注意的点:去重!

2024-04-21 23:22:32 268 4

原创 Leetcode 4.18

状态dp[i][j]表示s[…i]与p[…j]是否能够匹配。dp[s.size()-1][p.size()-1]即为本题答案。状态转移当。

2024-04-18 23:02:15 638 1

原创 Leetcode 4.16

【代码】Leetcode 4.16。

2024-04-16 09:51:11 470

原创 Leetcode 4.14

我们先看后两位 4, 1 能否组成更大的排列,答案是不可以,同理 5, 4, 1也不可以 直到3, 5, 4, 1这个排列,因为 3 < 5, 我们可以通过重新排列这一段数字,来得到下一个排列。因为我们需要使得新生成的数列尽量小,于是我们可以对5, 3, 1进行排序,可以发现在这个算法中,我们得到的末尾数字一定是倒序排列的,于是我们只需要把它反转即可。最终,我们得到了4, 1, 3, 5这个数列 完整的数列则是2, 6, 4, 1, 3, 5。然后,我们调换3和4的位置,得到4, 5, 3, 1这个数列。

2024-04-15 00:14:30 419

原创 C++高频面试知识总结 part3

因此, 为了避免 rehash 对服务器性能造成影响, 服务器不是一次性将 ht[0] 里面的所有键值对全部 rehash 到 ht[1] , 而是分多次、渐进式地将 ht[0] 里面的键值对慢慢地 rehash 到 ht[1]。随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希表的负载因子(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。这种方式可以减少遍历的次数,提高扩容的效率。

2024-04-07 10:13:12 714

原创 C++高频面试知识总结 part2

也就是。

2024-04-06 23:57:03 1087

原创 win10电脑无线网卡优化

近期win10会频繁断网,无任何规律。目前整理搜索后使用以下两种方法优化网卡,更改配置后断网问题得到有效改善。方法二:【Preferred enable】修改为prefer 5.2GHz。方法一:在【电源管理】中取消勾选【允许计算机关闭此设备以节约电源】

2024-04-05 19:17:16 530

原创 Leetcode 4.5

DFS 是一个劲的往某一个方向搜索,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后**,恢复状态,回溯上一层,再次搜索**。当问题需要 “回头”,以此来查找出所有的解的时候,使用回溯算法。: 在搜索中,遇到“这条路不可能和目标字符串匹配成功”的情况,例如当前矩阵元素和目标字符不匹配、或此元素已被访问,则应立即返回,从而避免不必要的搜索分支。由于我们这条路是可以回头的,并非只能往右下方向走,所以可能会遇到回踩前一个刚刚访问过的格子,而这个格子,题目里说是不可以重复使用的。

2024-04-05 17:17:26 755

原创 Leetcode 4.2

回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。

2024-04-02 23:56:10 326

原创 linux系统编程 线程 p1

进程ID是用pid_t数据类型来表示的,是一个非负整数。线程ID是用pthread_t 数据类型来表示的,实现的时候可以用一个结构来代表pthread_t数据类型,所以可移植的操作系统实现不能把它作为整数处理。就像每个进程有一个进程ID一样,每个线程也有一个线程ID。进程ID在整个系统中是唯一的,但线程ID不同,线程ID只有在它所属的进程上下文中才有意义。线程可以安排它退出时需要调用的函数,这与进程在退出时可以用atexit函数安排退出是类似的。这种现象是因为:线程的调度取决于调度器的调度策略。

2024-04-02 22:51:38 742

原创 Leetcode 4.1

否则就无法跳到最后一个位置了。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。可以这么理解 想象你在玩大富翁,回合制游戏,随身带的钱决定你每回合最多可以走多少格,需要以最短的回合数到达终点。格子里面的数字代表“钱”,每回合你需要停留在格子里休息得到补充的“钱”才能继续行走。每次走到一个格子的时候,你需要估计预算在下一个回合能走多少格,哪个格子的钱最多,下一回合就去那个格子。但是前面的格子里有多少钱有战争迷雾看不到,要到了才知道。

2024-04-01 21:47:40 811

原创 操作系统高频面试知识总结 part1

负责管理和协调计算机硬件资源,为应用程序提供环境和服务的组件。包括:资源管理、进程管理、文件管理、用户界面、错误检测和恢复。正在执行的程序实例,拥有独立的内存空间和系统资源,每个进程都有自己的指令序列、数据和执行环境。进程创建是通过操作系统调度和管理,当程序被执行,操作系统系统会为其创建一个独立的进程。其主要特征包括:独立性:内存空间和系统资源是独立的;执行状态:运行、就绪、阻塞等不同状态,根据进程调度算法决定执行顺序;

2024-04-01 15:34:45 773

原创 C++高频面试知识总结 part1

是一种用户定义的数据类型,包含了数据成员和函数成员。数据成员存储与类相关的状态,函数成员定义对数据进行操作的方法。

2024-03-27 16:25:24 937

原创 Leetcode 3.26

第K个最大元素用堆做比较容易,可以维护一个只有K个元素的大根堆,如果元素个数超过K则pop,也就是将堆顶大元素删除,那么当前堆就是一个以第K大元素为堆顶的大根堆。堆可以用priority_queue实现。本题难点在于priority_queue的相关知识,如何自定义比较方式等。比如本题的数据类型并不是基本数据类型,而是pair<int, int>,所以需要自定义比较方式。思路是维护一个递减栈,存储的是当前元素的位置。

2024-03-26 23:57:31 973

原创 Leetcode 3.25

void push(int val) 将元素val推入堆栈----> stack push(val) 以及 stack_min.push(min(val, stack_min.top()))难点就在于如何获取最小元素,一个栈正常push元素,另一个栈存放当前栈中的最小元素。void pop() 删除堆栈顶部的元素----> stack.pop() stack_min.pop()int top() 获取堆栈顶部的元素-----> stack top()其实与括号的题目有点类似,用两个栈,分别为数字栈字母栈。

2024-03-26 00:16:05 398

原创 linux系统编程 socket part2

UDP丢包并不是因为TTL,TTL是当前包的要跳转的路由的个数,linux环境下一般默认为64,Windows一般为128,一般情况下完全足够。丢包其实是由于阻塞造成的。问题3:发送端发送消息后,接收端收到了数据,并且发送了ACK,但是ACK数据丢了,在一定时间后没有收到接收端ACK,则重新发送消息。问题4:如图 d2 丢包,ACK1 延迟回复给了发送端,则发送端认为d2发送成功,继续发d3,实际接受端是没有收到过d2的。rcver.cpp:设置套接字,打开广播选项,如果不打开,可能收到,可能收不到。

2024-03-24 23:17:21 1052

原创 Leetcode 3.18

递归遍历每一个节点的所有可能的路径,然后将这些路径数目加起来即为返回结果。假设当前的节点 p 的值为 val,我们对左子树和右子树进行递归搜索,对节点 p 的左孩子节点 pl 求出。: 当 (1) root 为叶节点(左右子树均为空) 且 (2) 路径和等于目标值(targetSum == 0),则将此路径 tmp 加入 ans。我们可以递归遍历记录所有的路径,同时计算路径和,如果等于那么添加到最终的vector<vector< int >>中。: 当前节点 root ,当前目标值 targetSum。

2024-03-18 21:40:00 814

原创 linux系统编程 socket part1

套接字是一种通信机制(通信的两方的一种约定),socket屏蔽了各个协议的通信细节,提供了tcp/ip协议的抽象,对外提供了一套接口,通过这个接口就可以统一、方便的使用tcp/ip协议的功能。在本章中,我们将描述套接字网络进程间通信接口,进程用该接口能够和其他进程通信,无论它们是在同一台计算机上还是在不同的计算机上。套接字是通信端点的抽象。以为例报式:从sockfd接收消息,接收的消息buf,长度len, 有没有特殊要求 ,对端的地址,和地址长度。在32位的机器上,各占用4,4,1共9个字节的大小。

2024-03-17 23:47:38 855

原创 Leetcode 3.15

根据前序和中序遍历我们可以确定二叉树的根节点,左子树和右子树,不断递归得到结果。比较复杂的是确定左右子树的边界。借助map来快速确定元素在inorder中的位置,这副图中的边界位置建议仔细推导。题目要求展开后与先序遍历相同,那么可以按照先序遍历再更改链表,在前序遍历结束之后更新每个节点的左右子节点的信息,找到前后元素在二叉树当中的位置,将二叉树展开为单链表。方法一:我们只需存储升序遍历,返回升序遍历的结果即可。改进:我们还可以在找到答案后停止,不需要遍历整棵树。函数作用:将一个二叉树,原地将它展开为链表。

2024-03-16 00:04:55 353

原创 Leetcode 3.14

来递归判断,函数表示考虑以 root 为根的子树,判断子树中所有节点的值是否都在 (l,r) 的范围内(注意是开区间)。如果 root 节点的值 val 不在 (l,r) 的范围内说明不满足条件直接返回,否则我们要继续递归调用检查它的左右子树是否满足,如果都满足才说明这是一棵二叉搜索树。如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。

2024-03-15 00:21:45 369

原创 Leetcode 3.13

特别需要注意的点:这道题虽然是求路径,按题目中描述4->3->2->1的路径长度只有3,但是在递归时,我们不能直接return 3,因为你不知道当前递归到二叉树的哪一层,是否为root,每一次都必须返回该节点为根的子树的深度,在最终的返回结果中再减1。4.都不为空,那么仔细观察,左右子树是不相等的,左子树的右子树 等于 右子树的左子树:root->left->right == root->right->left;并且,当前层root->left->val == root->right->val;

2024-03-13 22:31:12 871

原创 Leetcode 3.12

设置两指针 left, right 分别指向两链表头部,比较两指针处节点值大小,由小到大加入合并链表头部,指针交替前进,直至添加完两个链表。空间复杂度:O(log⁡n),其中 n 是链表的长度。返回辅助ListNode dummy作为头部的下个节点 h.next。双指针法合并,建立辅助 ListNode* dummy 作为头部。先用一个循环,用unordered_map把两个链表捆绑。时间复杂度:O(nlog⁡n),其中 n 是链表的长度。再用一个循环构建新链表的引用指向。

2024-03-12 23:26:40 879

原创 leetcode 3.11

的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个小于等于value的数,找到返回该数字的地址,没找到则返回end。的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个小于value的数,找到返回该数字的地址,没找到则返回end。以下为个人总结,仅供参考。的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个。的排好序的数组中,在数组的 [begin, end) 区间中二分查找。value的数,找到返回该数字的地址,没找到则返回end。

2024-03-11 22:06:07 887 1

原创 Leetcode 3.7

在排序数组中查找元素的第一个和最后一个位置寻找target在数组里的左右边界,有如下三种情况:情况一:target 在数组范围的右边或者左边,例如数组{3, 4, 5},target为2或者数组{3, 4, 5},target为6,此时应该返回{-1, -1}情况二:target 在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1, -1}

2024-03-07 21:48:29 902

原创 leetcode 3.6

matrix[i][j] 最终会被交换到 matrix [j][n−i−1]位置,最初思路是直接上三角交换,但是会存在问题,有几个元素是无法交换到的。,创建两个指针 pA 和 pB,初始时分别指向两个链表的头节点 headA 和 headB,然后将两个指针依次遍历两个链表的每个节点。基于上一题环形链表,如果slow和fast相遇,让其中一个指针重新指向head,并且两个指针都每次只走一步,再次相遇就是环的入口。对于主对角线翻转而言,我们只需要枚举对角线左侧的元素,和右侧的元素进行交换,即。

2024-03-06 23:26:19 957

原创 leetcode 3.5

pre保留的是当前包含了当前遍历的最大的前缀和,如果之前的pre 对结果有增益效果,则 pre 保留并加上当前遍历, 如果pre 对结果无增益效果,需要舍弃,则 pre 直接更新为当前遍历数字;空间复杂度:O(m+n),其中 mmm 是矩阵的行数,nnn 是矩阵的列数。时间复杂度:O(mn),其中 mmm 是矩阵的行数,nnn 是矩阵的列数。可以将矩阵看成若干层,首先输出最外层的元素,其次输出次外层的元素,直到输出最内层的元素。先用两个for记录出现0的行和列,再用两个for去标记出现0的所有行列元素。

2024-03-05 23:55:44 401

原创 leetcode 3.4

数组的索引对应于字符在字母表中的位置,例如 ‘a’ - ‘a’ = 0,‘b’ - ‘a’ = 1,以此类推。如果ans.back()[0] >= num[0] 那么需要合并,ans.back()[1] = max(ans.back()[1], num[1]);随后遍历剩余string,保证滑窗内只有m个元素,添加s[j],则删除s[j - m];经典滑动窗口,左右指针控制当前滑动窗口的大小,用map去存储当前滑动窗口内的字母个数。如果s[r]在map里,说明有重复,则左指针右移,直到s[r]无重复为止;

2024-03-05 00:28:02 352

原创 leetcode 3.1

第二次遍历 i = 1, j = 2,a与c不等,也不能是0,这里需转换成 a 与 ac 最长子序列,这里需要把之前的关系传递过来,所以dp[1][2] = 1。第四次遍历 i = 2, j = 1,就是需要比较ab与a的最长子串,把之前的关系传递过来,所以dp[2][1] = 1。对比的两个字符相同,去找它们前面各退一格的值加1即可:dp[i+1][j+1] = dp[i][j] + 1;第三次遍历 i = 1, j = 3,a与e不相同,把之前的关系传递过来,所以dp[1][3] = 1。

2024-03-01 19:22:32 1017

原创 leetcode 2.29

方法二:把二维n * m展开为一维数组,需要注意的是一维数组中下标为N的数,在二维数组中的对于坐标为[N / m][N % m]时间复杂度:O(log⁡n),其中 n 为数组的长度。二分查找所需的时间复杂度为 O(log⁡n)。空间复杂度:O(1)。我们只需要常数空间存放若干变量。方法一:先二分确定列,再二分确定行。

2024-02-29 23:23:35 465

原创 leetcode 2.28

3)边界条件:dp[0][0] = 1;、正常列,dp[i][j]=dp[i-1][j]+grid[i][j-1];2)转移方程:dp[i][j] = nums[i][j] + min(d[i-1][j],d[i][j-1]);3)边界条件:dp[0] = nums[0], dp[1] = max(nums[0], nums[1])2)转移方程:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];2)转移方程:d[i][j]=d[i-1][j]+d[i][j-1];

2024-02-28 23:52:31 871

原创 leetcode 2.27

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。或者vector还是[]的时候(考虑官方测试数据的输入可能为[]的情况,使用[ ]前需要判断一下是否为空)会报错!3.怎么找到最小数,也不能说是最小数,是一个连续数种的最小数,num - 1如果存在那么他就不是连续的最小数。2.num[i + 1]到num[j]的和为 pre[j] - pre[i]1.用pre[i]表示num[0]到num[i]的和。

2024-02-27 22:37:35 1059 1

原创 菜鸡刷题-1

很久不刷题了,再次刷题手太生了,痛定思痛,还是继续刷吧,立帖为证,天天坚持217. 存在重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。解题思路;1.排序,则若有重复会出现在相邻位置,扫描数组,比较相邻位置元素是否相等获取vector长度用size()class Solution {public: bool containsDuplicate(vector<i...

2021-10-17 22:50:07 124

原创 shell脚本-1

0.狂降变量:1.标识符 2.数据类型 运算符:让多个变量产生关系 逻辑语句:1.顺序 2.分支 3.循环 方法/函数:将实现某一功能的代码封装1.变量定义变量时,变量名不加$ 基本都当成文本处理-bash-4.2$ a=10-bash-4.2$ b=20-bash-4.2$ echo $a+$b10+202.shell字符串单引号:任何字符串都会原样输出,变量无效 双引号:可以有变量以及转义字符-bash-4.2$ name=haha-bash-4.2$ e.

2021-10-16 22:28:59 82

原创 Linux就该这么学2

ifconfig网卡名称 IP地址 子网掩码 MAC地址(物理地址)RX 收到的数据包大小 TX 发送的大小uname -a系统信息 主机名称 内核版本号 内核发布信息 系统架构x86_x64[tduan@sadie08vm03 ~]$ uname -aLinux sadie08vm03.rsv.ven.veritas.com 3.10.0-1062.el7.x86_64 #1 SMP Thu Jul 18 20:25:13 UTC 2019 x86_64 x86_64 x86...

2021-08-09 22:34:59 106

原创 linux就该这么学1

wget [网址] :从网址中下载 ps 查看进程R runningS 中断(休眠)Z 僵尸D 不可中断T 停止[tduan@sadie08vm03 ~]$ ps -lF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD0 S 1316640 22136 22127 0 80 0 - 5065 sigsus pts/1 00:00:00 csh0 R 1316640 24553...

2021-08-08 16:29:08 68

原创 C++高频知识总结P5

C++static、extern、const、volatile关键字?static、extern、const、volatile关键字?static:static的意思是静态的,可以用来修饰变量,函数和类成员。局部变量:被static修饰的局部变量就是,它会在程序运行过程中,并且值不变。全局变量:被static修饰的全局变量函数只能在本文件中使用,不能被其他文件调用。**函数:被static修饰的函数就是静态函数,静态函数只能在本文件中使用,不能被其他文件调用,也不会和其他文件中的同名函数冲突。

2020-11-20 22:13:16 91

原创 Linux常用命令

这里写目录标题常用命令便捷命令tab上下箭头ls命令扩展通配符cd扩展常用命令cd change dir 更换目录touch 文件,若没有则创建mkdir 创建目录rm 删除文件rm -r 删除目录pwd print work dir 输出当前的目录便捷命令tab自动补全文件名,上下箭头查找之前写过的命令,退出用Ctrl+Cls命令扩展ls-a 显示所有文件+目录,包括隐藏的文件/目录,蓝色是文件夹,白色是文件-l 以纵向方式显示所有文件+目录-h 配合l一起使用,

2020-10-07 18:56:11 93

原创 操作系统高频知识总结P1

操作系统1.进程调度算法?抢占式非抢占式?进程调度算法1.先来先服务调度算法(FCFS,first come first served)2.短作业优先调度算法(SJF, Shortest Job First)3.最高响应比优先法(HRRN,Highest Response Ratio Next)4.时间片轮转算法(*RR,Round-Robin*)5.多级反馈队列(*Multilevel Feedback Queue*)抢占式和非抢占式1) 非抢占式优先权算法2) 抢占式优先权调度算法2.虚拟内存机制?mm

2020-09-16 10:59:33 237

原创 2016INTEL

2016INTEL1.scanf2.数组初始化3.内存对齐4.有向图回路5.求20136. 2^100 mod 77. 二叉树顺序8.排序9.排序10.冯诺依曼1.scanfscanf传入的是地址,printf传入的是数值对于数组,变量名就是地址。c是c[0]的地址,&c是整个c[0]的首地址,二者虽然值相同但是所占内存空间不一样。链接:https://www.nowcoder.com/questionTerminal/a29e4033053f43b4bd8d8b15c868c115来源

2020-09-11 15:18:48 102

原创 C++高频知识总结P4

总结C++1.构造函数可以是虚函数吗?析构函数可以是虚函数吗?为什么析构函数要定义为虚函数?2.构造函数或者析构函数中调用虚函数会怎样?3.声明和定义的区别?4.指针函数和函数指针?5.指针常量?常量指针?6.深拷贝与浅拷贝7.什么时候需要自定义拷贝构造函数?8.右值引用?C++1.构造函数可以是虚函数吗?析构函数可以是虚函数吗?为什么析构函数要定义为虚函数?①从存储空间角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,

2020-09-03 15:34:49 118

车载LiDAR点云中建筑物立面自动分割

车载LiDAR点云中建筑物立面自动分割 论文,希望对大家有所帮助

2018-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除