Coding Lane

Rest at the end, not in the middle.

Debug日志

令人头大的bug汇总

一些需要注意的函数 system(“pause”) 是调用DOS系统的暂停命令 pause 来暂停程序执行,按任意一个键后将继续执行。 Sleep() 是 windows.h的函数,让程序进入睡眠状态,要求参数时间毫秒,到时间后自动苏醒,程序继续执行。 例如: Sleep(2500); 休眠2500毫秒,满2.5秒后程序继续运行。 Debug是生活的一部分,没问题吧...

LC235&236题————二叉树公共祖先问题

题目类型:Midium

235题——二叉搜索树的公共祖先 原题链接在这里——力扣235题 解题思路1 遇到这种题要首先想到递归法。 如果根节点为空,直接返回NULL; 如果left和right有一个为根节点,那么他俩的公共祖先必为根节点; 如果两个目标节点有一个为空,那么就返回另一个节点; 如果目标节点分居左右子树,那么必返回root; 如果上述情况均不满足(不可能),就返回NULL。...

DFS类题目汇总

问题一:电话号码的字母组合 解题思路 代码 class Solution { vector<string> ans; string strs[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; public: vector<string> letterCombi...

二叉树的遍历(迭代法)

题目类型:Midium

问题一:二叉树的前序遍历 解题思路 递归法有手就行,本次来试一下迭代法。 迭代法都需要用到栈结构。利用栈先入后出的特点依次将元素遍历。 代码如下 class Solution { public: vector<int> postorderTraversal(TreeNode* root) { vector&...

如何从无到有构建一棵二叉树

思想概述 代码如下 //先构建TreeNode结构体 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; // 根据数组构造二叉树 TreeNode* construct_b...

哈希表系列问题集合

题目类型:Midium

首先定义unordered_map<int, int> pairs,默认哈希表数组大小为n; 哈希表底层就是个多条链表数组,哈希表本质是降低算法的时间复杂度(从O(n)到O(1))。而插入和搜索是哈希表中的两个基本操作。 哈希表各函数的定义 使用count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是0或1。 ...

各类基本排序算法汇总

冒泡、选择、插入、快速、归并、堆、桶

导航窗格 冒泡排序 选择排序 堆排序 快速排序 插入排序 归并排序 冒泡排序 排...

数组无重复子串/子数组问题

题目类型:Midium

LC第41题(好像不是41题qwq):最长无重复子数组 解题思路 使用哈希表来记录不重复的数字,并开始用快指针遍历数组。如果快指针遍历到了滑动窗口内已经出现过的元素,就把慢指针指向的坐标值+1. 不要忘了更新hash[arr[i]] = i 哦!最后返回值为max(ans, i - left + 1)。 代码如下: int maxLength(vector<int>&...

LC206题————反转链表

题目难度:简单

解题思路 常见的链表操作为——添加一个哑节点(dummy node) 这个dummy的next指针指向head.如此我们就不需要对头节点进行其他操作了。 但请注意,程序写完一定要把dummy delete掉! 代码如下: #include<iostream> using namespace std; //以1,2,3,4,5为例: ListNode* reverseLi...

LC237题————删除链表中的元素

题目难度:简单

解题思路 我们该如何删除cur所指的节点呢? 一共只有两个操作: 将cur所指的下一个节点值赋给cur,这样cur对应的值就被抹掉了; 将指向下下一个节点的next指针提前,使其指向下一个节点。 如此操作之后,相当于删去了cur节点之后的那个节点,而cur这个节点悄然变成了原来的那个“下一个节点”,从而达到了删除cur节点的目的。 代码如下: cur-...

LC19题——删除链表中倒数第n个元素

题目难度:简单

解法1 解题思路 常见的链表操作为——添加一个哑节点(dummy node) 这个dummy的next指针指向head.如此我们就不需要对头节点进行其他操作了。 但请注意,程序写完一定要delete掉! 代码如下: #include <iostream> using namespace std; struct ListNode { int val; ListN...

TCP与UDP的关系与区别

计算机网络

前情提要 自己的实习项目和UDP密切相关,因此有必要了解为什么使用UDP而不是TCP,优点又是什么? TCP和UDP的区别 TCP的优点 TCP面向连接,而UDP是无连接的。 TCP提供可靠服务,而UDP不保证可靠,有可能丢包; TCP是面向字节的(把数据看成一连串的无结构的字节流),而UDP是面向报文的。 UDP的优点 TCP有拥塞控制,而UDP则没有(拥塞...