![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
打不过我吧
这个作者很懒,什么都没留下…
展开
-
【leetcode】 120. 三角形最小路径和【动态规划】
120. 三角形最小路径和class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { int sz = triangle.size(); vector<int> dp(sz+1,0); for(int i = sz-1; i >=0; i--){ for(int j = 0; j &.原创 2020-09-20 23:14:30 · 67 阅读 · 0 评论 -
【leetcode】25. K 个一组翻转链表
25. K 个一组翻转链表思路:1 写一个翻转链表的子函数2 在主函数中,找到翻转的开头和翻转的结尾,然后递归的调用主函数来翻转下一组。需要注意的是为了不用dummy头结点,只能从后实现代码:class Solution {public: ListNode* reverseKGroup(ListNode* head, int k) { ListNode* cur = head; for(int i = 0; i < k; i++){原创 2020-09-07 11:05:46 · 79 阅读 · 0 评论 -
【leetcode】92. 反转链表 II
题目描述:92. 反转链表 II思路:翻转链表都需要两个指针 pre 和 cur,建立临时节点t = cur->next;cur->next = t->next;//移动指针t->next = pre ->next;//头插法pre ->next = t;//移动指针需要注意的是:m到n的循环操作,要注意的是m到n之间需要操作n-m-1次,所以for(int i= m; i < n; i++)简单的记住t cur t pre t实现.原创 2020-08-18 00:07:31 · 69 阅读 · 0 评论 -
【leetcode】110. 平衡二叉树
题目描述:110. 平衡二叉树思路:左右子树高度差小于等于1,则平衡,先求高度,再判断是否平衡。递归实现。易错点在于判断完root是否平衡还要判断root左右孩子节点。实现代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x原创 2020-08-17 23:52:56 · 96 阅读 · 0 评论 -
【编程】已知前序遍历中序遍历,得出叶子节点的个数
题目描述:已知先序遍历、中序遍历,求叶子节点数量 思路:DFS(深度遍历算法),叶子节点也就是只有根节点,无左右孩子节点我的想法是根据重建二叉树改编,本题不再需要重建树,需要改递归终止条件:当前序遍历序列长度为1的时候就是叶子节点,return 1#include<iostream>#include <vector>using namespace std;int N, node=0;//node是叶子节点个数,N为遍历序列个数int helper(vector原创 2020-08-17 17:34:47 · 630 阅读 · 0 评论 -
【leetcode】每日一点点
要输出二维数组,所以要分层打印加一个变量size,控制每一层输出多少个。之字打印和她类似。排列组合的题目,动态规划去做。https://www.cnblogs.com/grandyang/p/4299608.html卡塔兰数数列类似于地下城勇士那一题,从最底层做动态规划class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { vec..原创 2020-07-15 01:11:05 · 70 阅读 · 0 评论 -
【leetcode】174. 地下城游戏
题目:https://leetcode-cn.com/problems/dungeon-game/思路:1,要分清骑士到达某个房间的血量和这个房间的消耗(可能是+也可能是-)2,考虑到从公主房间离开时候血量>=1,倒退到进入公主房间时候骑士的血量必须要大于公主房间的消耗,即当前骑士血量与前一状态有关,所以考虑动态规划。3,考虑二维数组dp[i][j]表示第i行第j列房间骑士的总血量,包括 他在当前房间消耗的 和 进入下一个房间(右或者下)需要的;aaaa = min(dp[i+1]原创 2020-07-13 01:06:20 · 121 阅读 · 0 评论 -
leetcode347 前 K 个高频元素
题目描述:leetcode347前 K 个高频元素思路:将元素加入hashmap建立<数字,频率>的映射,然后借助priority_queue<频率,数字>实现最大堆,取最大堆的k个元素,时间复杂度O(k logN)class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int原创 2020-06-24 00:32:16 · 140 阅读 · 0 评论 -
【leetcode】【hot100】11盛最多水的容器
题目描述:https://leetcode-cn.com/problems/container-with-most-water/给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不...原创 2020-05-04 11:33:27 · 98 阅读 · 0 评论 -
【leetcode】【hot100】10.正则表达式
题目描述:https://leetcode-cn.com/problems/regular-expression-matching/解题思路:代码实现:class Solution {public: bool isMatch(string s, string p) { if (p.empty()) return s.empty();i...原创 2020-05-03 15:16:09 · 85 阅读 · 0 评论 -
【leetcode】【hot100】3无重复字符的最长子串
题目描述:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/解题思路:代码实现:class Solution {public: int lengthOfLongestSubstring(string s) { int len = 0,...原创 2020-05-03 14:19:20 · 76 阅读 · 0 评论 -
【编程题】逛街
链接:https://www.nowcoder.com/questionTerminal/35fac8d69f314e958a150c141894ef6a来源:牛客网小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大...原创 2020-04-25 01:29:58 · 508 阅读 · 0 评论 -
【编程题】字符串压缩算法和常用的substr与replace函数
题目描述:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?#include <...原创 2020-04-24 23:29:52 · 427 阅读 · 0 评论 -
重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; * ...原创 2020-04-21 17:48:04 · 85 阅读 · 0 评论 -
函数【默认参数】
做了一道选择题,让选择默认参数int fun(int a, int b, int c);1 int fun(int a = 0, int b = 1, int c = 1);2 int fun(int a = 0, int b, int c = 1);//错误3 int fun(int a, int b=0, int c = 1);//正确如果某个参数是默认参数,那么它后面...原创 2020-04-15 22:47:53 · 157 阅读 · 0 评论 -
【剑指offer】数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路:考虑base为0,结果res=0考虑e为负数,结果为base的|e|次方分之一class Solution {public: double Power(double base, int expo...原创 2020-04-13 16:56:07 · 71 阅读 · 0 评论 -
【memcpy 】手写代码 C++
用法:#include <string.h>功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。#include<iostream>#include<cstdio>#include<cstring>using namespace s...原创 2020-04-11 17:55:12 · 619 阅读 · 0 评论 -
memset()函数的一点总结
测试代码:总结:memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的;包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化;void *memset(void *s, int v,size_tn); 这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数;【memset是逐...原创 2020-04-11 17:05:29 · 238 阅读 · 0 评论 -
判断一棵树是否为搜索二叉树
二叉树中序遍历的情况下,遍历结果是所有节点依次升序的,就是搜索二叉树,否则就不是。由此我们可以对之前非递归版本的中序遍历稍加修改,在打印节点的时机判断当前节点是否大于上一个节点,就可以判断此二叉树是否是搜索二叉树。思路:1中序递归遍历二叉树,将结果保存进一个stack2比较大小,栈顶为大,栈顶为小。测试代码#include<iostream>#inclu...原创 2020-04-11 00:12:48 · 446 阅读 · 0 评论 -
判断一个数是否是完全二叉树
参考层序遍历的算法,利用队列作为储存结构,将二叉树从上到下,从左到右遍历,对于完全二叉树来说,一旦队列中读到空指针,则必定已将二叉树遍历完全了,否则若空指针后还有为访问的元素,则不是完全二叉树。思路:遍历二叉树,直到结尾(nullptr)→ 当前节点不存在,空树或者叶子节点,返回真【出口A】→当前节点存在,入队→→队列非空,取队首元素→→→队首是叶子 &&...原创 2020-04-10 21:37:58 · 394 阅读 · 0 评论 -
【编程】把两个有序数组合并成一个有序数组
#include <iostream>#include <vector>#include <algorithm>using namespace std;int *sortArr(int* stra, int lena, int* strb, int lenb){ if(stra == nullptr || strb == nullptr) re...原创 2020-04-10 12:01:16 · 1673 阅读 · 0 评论 -
二叉树的【先序遍历】【中序遍历】【后序遍历】【层序遍历】【递归】【非递归】
目录1 先序遍历2 中序遍历3 后序遍历4 层序遍历测试代码:帮助理解:浙江大学数据结构:https://www.bilibili.com/video/BV1H4411N7oD?p=331 先序遍历//前序遍历void ProOrderTraverse(BiTree tree){ if (tree == NULL) return; cout &...原创 2020-04-07 16:14:38 · 162 阅读 · 0 评论 -
【数据结构】【快速排序算法】【C++】
快排原理——分治1、从数列中取出一个数作为基准数(枢轴,pivot)。2、将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。3、再对左右的子区间重复第二步的划分操作,直至每个子区间只有一个元素。快排最重要的一步就是划分了。划分的过程用通俗的语言讲就是“挖坑”和“填坑”。快速排序时间复杂度快速排序的时间复杂度在最坏...原创 2020-04-07 11:16:39 · 266 阅读 · 0 评论 -
【数据结构】KMP算法
目录KMP时间复杂度match函数match的实现match的时间复杂度具体代码实现:KMP要求模式串一头一尾能匹配上解释: j=6时候,match = 3,意思是p0-p3是能够和p(6-3)-p6匹配。注意:当有一个串能配得上,并不能到此为止,要继续检查还有没有更长的串。KMP时间复杂度match函数优秀的做法...原创 2020-04-03 23:15:08 · 163 阅读 · 0 评论 -
合并两个有序链表,保持链表顺序。
(编程题)合并两个有序链表,保持链表顺序。例如:输入:链表1:1->3->5->7链表2:2->4->6->8输出:链表交集:1->2->3->4->5->6->7->8/*struct ListNode { int val; struct ListNode *next; Li...原创 2020-04-03 11:43:19 · 230 阅读 · 0 评论 -
正整数序列输出最小的整数
给定一个正整数序列,请尝试通过将它们重新排列,组合成一个最小的整数。例如输入为数组[3,6,9,12],返回值为12369。由于有可能会超出整数最大范围,所以请返回字符串类型。剑指offer上有class Solution{ public: string printMin(vector<int> num){ if(num.size() ...原创 2020-04-03 00:07:07 · 972 阅读 · 0 评论 -
后缀表达式
请把表达式(1+2)*3/(10+1)转为后缀表达式(1) 1 2 + 3 * 10 1 + /首先按照运算的先后顺序将表达式全部都添加上括号 1 (((1+2)*3)/(10+1)) 然后由于是后缀表达式,从里到外将所有运算符都拿到右括号的右边 1 (((12)+3)*(101)+/ 最后...原创 2020-04-02 23:59:40 · 83 阅读 · 0 评论 -
百度果汁
n个人,k种果汁,每个人对应一种果汁,果汁买一送一,统计要买多少瓶思路:哈希/数组每次计算第i人喝第j种(j<=k),第j种数目b[j]+1,最后统计1-k对应的数目.注意的点,种类要-1,1到k种,对应0到k-1 买一送一要向后取值,比如第j种总计三瓶,那么要花钱买2瓶#include <iostream>#include &...原创 2020-03-30 23:52:43 · 81 阅读 · 0 评论 -
C++中struct和class的区别
C++中struct和class的区别在C++中,class和struct做类型定义是只有两点区别:默认继承权限不同,class继承默认是private继承,而struct默认是public继承 class还可用于定义模板参数,像typename,但是关键字struct不能同于定义模板参数C++保留struct关键字,原因保证与C语言的向下兼容性,C++必须提供一个structC...原创 2020-03-23 00:51:06 · 104 阅读 · 0 评论 -
C++从源文件到可执行文件 & 目标文件 & 链接
C++从源文件到可执行文件的过程、源代码–>编译预处理–>编译–>优化–>汇编–>链接–>可执行文件具体如下:编译预处理-宏、条件编译指令-头文件指令读取源程序,对其中的伪指令(以#开头的指令)和特殊符号进行预处理。宏定义指令:如#define Name TokenString #undef等。对于#define,预编译所做的就是将程序中的Na...原创 2020-03-23 00:49:21 · 571 阅读 · 2 评论 -
new/delete与malloc/free
请你回答一下new/delete与malloc/free的区别是什么①它们都是动态管理内存的入口。②malloc/free和operator new/operator delete是c++标准库的函数,new/delete是c++操作符③malloc/free只是动态分配内存空间;而new/delete除了分配空间还会调用构造函数和析构函数进行初始化与清理(清理成员);opera...原创 2020-03-23 00:46:34 · 94 阅读 · 0 评论 -
TCP相关问题
TCP和UDP的区别?TCP三次握手1)TCP和UDP区别【1】 连接TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。UDP无连接。【2】服务对象TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP具有多播的特点,支持一对一,一对多,多对一,多对多的交互通信。【3】可靠性TCP是可靠交付:无差错,不丢失,不重复,按序到达。UDP...原创 2020-03-23 00:45:57 · 280 阅读 · 0 评论 -
智能指针&&深拷贝浅拷贝
1 CVTE 21届实习生 软件类C/C++面经作者:没有牛气的牛客链接:https://www.nowcoder.com/discuss/371318?type=2&order=3&pos=2&page=1来源:牛客网1,自我介绍2,简历上的项目介绍3,智能指针(大概介绍了原理,没具体讲)4,c++的拷贝方式(一开始没听清楚,答不出来,后来才问...原创 2020-03-23 00:53:10 · 9219 阅读 · 4 评论 -
剑指offer 汇总
一 二维数组中的查找 找target 2/27二 替换空格三 链表翻转(从尾到头打印链表)2/28六 旋转数组的最小元素七 斐波那契数列八 跳台阶九变态爬楼梯十 矩形覆盖...原创 2020-03-19 23:24:06 · 134 阅读 · 0 评论 -
剑指offer 刷题7
圆圈中最后剩下的数(约瑟夫问题) 3/16参考:https://www.nowcoder.com/questionTerminal/11b018d042444d4d9ca4914c7b84a968参考:https://blog.csdn.net/qq_41822235/article/details/82382422设隐函数f(n,m)为在n个数字中每次删除第m个数字最后剩下的数字...原创 2020-03-19 01:05:19 · 334 阅读 · 0 评论 -
剑指offer 6
二进制中的1的个数3/11参考:https://www.cnblogs.com/iwiniwin/p/11058255.html【位运算】1 与1相与完,1左移一位class Solution {public: int NumberOf1(int n) { int unit = 1, count = 0;//初始化unit为000(中间省略32...原创 2020-03-16 00:33:05 · 180 阅读 · 0 评论 -
剑指offer 刷题5 数组
数组中只出现一次的数字 3/9一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。参考:https://www.cnblogs.com/silentteller/p/12056878.html参考:https://www.cnblogs.com/zhudingtop/p/11387283.html借题发挥发现自己操作符和 操作运算符方面很差,...原创 2020-03-10 23:38:59 · 116 阅读 · 0 评论 -
剑指offer 刷题4 数组
二维数组中的查找3/6参考:https://www.cnblogs.com/silentteller/p/11762414.html(右上角查找)参考:https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e?f=discussion(左下角查找)思路:采用右上角元素进行比较:1 行r...原创 2020-03-08 00:25:47 · 374 阅读 · 0 评论 -
剑指offer刷题 3
用两个栈实现队列 3/4参考:https://www.cnblogs.com/silentteller/p/11827215.html思路:队列先进先出,栈先进后出栈1:模拟入队;栈2:模拟出队;res:保存出队结果实现入队:将元素压入栈1实现出队:如果栈2非空,将栈2元素弹出,存到res 如果栈2空,栈1非空,将栈1弹出,存到栈2,将...原创 2020-03-06 01:11:26 · 116 阅读 · 0 评论 -
剑指offer 刷题3
二十四二叉树中和为某一值的路径3/2参考:https://www.cnblogs.com/silentteller/p/10829084.html参考:https://www.cnblogs.com/silentteller/p/11925160.html参考:https://www.cnblogs.com/wanglei5205/p/8686863.html【前序遍历】【全局变...原创 2020-03-04 01:11:10 · 78 阅读 · 0 评论