- 博客(18)
- 收藏
- 关注
原创 NC140 归并排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896?tpId=117&&tqId=37851&rp=1&ru=/activity/oj&qru=/ta/job-code-high/question-ranking题目要求空间复杂度O(n),时间复杂度O(logn),归并排序满足这个条件什么时归并排序呢,一组数字,对半化成两拨,两拨各自排序后,再组合到一起,采用递归的思想,不断划分
2021-12-31 11:56:12
259
原创 算法复杂度
1、常数时间操作每次操作耗费的时间一样哪些是常数时间的操作:数组查值,比较大小,更新赋值,代数运算,按位运算不同操作对应的常数时间不一样,比如按位运算比代数运算快2、时间复杂度描述与数据量有关的常数时间操作次数的式子,抹掉低阶项,并且抹掉高阶项的系数就得到该算法的时间复杂度计算时间复杂度以最坏情况的例子来计算以选择排序为例,每一轮挑选出剩余元素的最小值,需要遍历剩余元素,并且与当前最小值比较,如果遍历到的元素更小,需要更新当前最小值,int n=5;int S=0;//累
2021-12-29 21:28:34
242
原创 JZ67 把字符串转换成整数(atoi)
把字符串转换成整数(atoi)_牛客题霸_牛客网对于字符串转整数的问题,不同的题目可能要求不太一样,有的如果出现了非法字符直接返回0,有的是回截取数字部分进行转换;对于空字符,有的会允许忽略先导空字符如本题,如果存在先导空字符,那么‘+’和‘-’就不处于字符串的首字母了;还有一个最容易被忽视的就是转换的数字范围,如本题要求转换得到的整数类型为int,那么当超出范围【INT_MIN,INT_MAX】之后需要做相应处理,按照题目要求,有的返回0,有的截取为INT_MAX或INT_MIN显示。class
2021-12-16 20:39:00
125
原创 NC66 两个链表的第一个公共结点
两个链表的第一个公共结点_牛客题霸_牛客网跟删除链表中倒数第n个节点的思路大致一样,因为两个链表的第一个公共节点,相当于相交部分的倒数第一个节点两个链表单独入栈,如果栈顶元素相等,则表示是相交部分的节点,弹出当栈顶元素不相等了,那么栈顶元素的next节点就是第一个公共节点同样考虑到假如第一个节点便是公共节点,那么弹出后不存在栈顶元素了,所以各自加一个辅助节点/*struct ListNode { int val; struct ListNode *next; ListNode(
2021-12-11 21:10:40
465
原创 NC127 最长公共子串
最长公共子串_牛客题霸_牛客网这道题的解题思路是运用动态规划遍历字符串str1,str2的每个字符,假如str1中的第i个字符与str2中的第j个字符是相等的,那么至少存在一个公共子串,在str1中以i结尾,在str2中以j结尾,可以用vector<vector<int>> dp来记录str1中第i个字符与str2中第j个字符是否能构成公共子串,以及构成公共子串的当前长度如果str1[i]==str2[j],那么dp[i][j] = dp[i-1][j-1]+
2021-12-11 20:33:13
183
原创 NC53 删除链表的倒数第n个节点
删除链表的倒数第n个节点_牛客题霸_牛客网可以让链表的所有节点,从头结点开始依次入栈,栈顶元素是链表的非空尾节点栈顶元素依次出栈,第n次出栈的元素就是倒数第n个节点,另该节点的前驱节点的next指向该节点的后继节点,就实现了删除,被删除节点的前驱节点就是此时的栈顶元素有一个问题是假如需要删除的是倒数第一个节点,当所有节点出栈之后,不存在栈顶元素node,此时如果使用node->next,会报错,可以在入栈前给原链表添加一个辅助节点dummy,从dummy开始入栈,这样一来出栈的时候栈中至少
2021-12-11 19:24:40
90
原创 NC22 合并两个有序的数组
合并两个有序的数组_牛客题霸_牛客网A和B两个数组,A有足够大的空间容纳AB两组的元素,也就是A后面是空的,所以按从大到小比较当m和n都还有值时,需要把A、B两个数组末尾元素拿出来对比其中一组的元素比较完之后当n还有值时,把A前面位置的元素用B剩下没比较的元素一一替换掉,因为A前面位置的元素在比较的时候已经填到了后面对应的位置当m还有值时,也就是A剩下没有比较的元素,保持原状就可以了class Solution {public: void merge(in
2021-12-11 17:19:12
383
原创 NC68 跳台阶
跳台阶_牛客题霸_牛客网从最后一步往前推导,最后一步有两种选择:跳一步台阶、跳两步台阶,也就是跳到倒数第二个台阶的方案数加上跳到倒数第一个台阶的方案数,即f(n) = f(n-2)+f(n-1);递归的终止条件也可以得到,f(0) = 0;f(1) = 1;f(2) = 2;那上面的递归就可以得到结果但是这样的话,多次函数调用,会重复计算某些值;比如f(5) = f(3)+f(4)=f(1)+f(2)+f(2)+f(3) = f(1) + f(2) + f(2) + f(1) + f(2);
2021-12-11 16:28:26
595
原创 NC78 翻转链表
反转链表_牛客题霸_牛客网题目给出的是单向链表,只需要遍历每个节点,修改每个节点的next指向首节点反转后,next指向nullptr,首节点的原next节点指向首节点定义一个listnode* prev = nullptr;head->next = prev;如果这么做会发现first节点和second节点断开了,解决办法是用中间变量先保存head->next;listnode* post = head->next;然后依次遍历每一个节点作为当前节点,修改每一
2021-12-08 21:06:26
324
原创 剑指 JZ85 连续子数组的最大和(二)
连续子数组的最大和(二)_牛客题霸_牛客网描述输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。1.子数组是连续的,比如[1,3,5,7,9]的连续子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是连续子数组2.如果存在多个最大和的连续子数组,那么返回其中长度最长的,该题数据保证这个最长的只存在一个3.该题定义的子数组的最小长度为1,不存在为空的子数组,即不存在[]是某个数组的子数组4.返回的数组不计入空间复杂
2021-12-03 22:58:24
233
原创 剑指JZ86 在二叉树中找到两个节点的最近公共祖先
描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1和o2,请找到 o1和o2的最近公共祖先节点。数据范围:1 \le n \le 10001≤n≤1000,树上每个节点的val满足0<val \le 1000<val≤100要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)注:本题保证二叉树中每个节点的val值均不相同。如当输入[3,5,1,6,2,0,8,#,#,7,4],5,1时,二叉树{3,5,1,6,2,0,8,#,#,...
2021-12-01 23:50:26
646
原创 剑指Offer JZ84 二叉树中和为某一值的路径(三)
描述给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点2.总节点数目为n3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)数据范围:0<=n<=10000<=n<=1000-10^9<=节点值<=10^9−109<=节点值<=109假如二叉树root为{1,2,3,4,5,4,3
2021-12-01 21:38:55
193
转载 Windows10音量图标点击后无法展开音量条
参考下面这篇文章,问题得到了解决https://jingyan.baidu.com/article/48b37f8d0a9f815b646488a7.htmlhttps://jingyan.baidu.com/article/48b37f8d0a9f815b646488a7.html
2021-11-17 12:32:53
343
原创 Centos7 安装更新git
当前版本太低,需要2.0以上版本首先卸载git使用命令yum remove git接下来到官网Git下载合适的版本可以下载最新版,也可以下拉至页面下方选择合适的版本然后在下载路径下解压,编译,安装tar -zxvf git-2.9.0.tar.gzcd git-2.9.0./configure --prefix=/usr/localmake但是make这一步报错表示缺少zlib的头文件切换至root用户,输入以下命令..
2021-11-10 15:03:42
811
原创 Leetcode 394. 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro...
2021-11-10 13:24:48
85
原创 windows10+vscode配置远程linux开发环境
windows10下载安装vscode首先到官网下载需要的安装软件:VSCode官网地址进入官网直接点击左侧的Download for Windows后会进入下载页面后选择取消,再点击右上角的Download选择合适的版本双击下载好的软件存放在E:\VS点击完成,选择深色主题,安装语言包并重启还需要安装一些必须的软件和便于开发常用的插件要配置远程开发环境,首先要保证linux系统上安装了openssh服务,可...
2021-11-10 01:07:08
703
转载 VM16+Centos7配置boost库
将“~/下载”路径下的boost源码包boost_1_69_0.tar.gz解压,如下:tar解压完成后,进入源码文件目录,查看内容:然后运行b2程序如下(boost源码比较大,这里编译需要花费一些时间):编译完成后,再运行下面命令把boost库头文件和lib库文件安装在默认的Linux系统头文件和库文件的搜索路径下,(因为要给/usr目录下拷贝文件,需要先进入root用户):安装完成后,最后会有如下信息打印出来:(暂时不确定failed update是否对后续有影响)...
2021-11-09 13:56:34
188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人