C++程序设计
文章平均质量分 56
D.Guan
怕什么真理无穷 进一步有进一步的欢喜
展开
-
C++命名规则
1.通用命名规则函数命名,变量命名,文件命名要有描述性;少用缩写。用缩写也要用大家都知道的缩写,比如num表示数量,dns是域名解析服务器(domin name sever),i表示迭代变量,T表示模板参数。1.1文件命名文件名要全部小写,单词之间可以使用‘-’或者‘_’等连接,C++文件以.cc结尾,头文件以.h结尾。特别指出,定义类时文件名一般出现,也就是名称相同后缀不同。比如:Food类,C++文件food.cc和food.h1.2类型命名类型名称的每个单词的首字母..原创 2021-03-05 12:10:44 · 3162 阅读 · 0 评论 -
Leetcode 201. 数字范围按位与
201. 数字范围按位与题目给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7] 输出: 4 示例 2:输入: [0,1] 输出: 0代码int rangeBitwiseAnd(int m, int n) { //无符号数按位与 //寻找公共前缀 int i=0; while(m!=n){原创 2020-11-22 15:16:25 · 147 阅读 · 0 评论 -
C++:Lambda在sort中的使用
sort(res.begin(),res.end(),[x,y](const vector<int>a,const vector<int>b){ int s1=abs(a[0]-x)+abs(a[1]-y); int s2=abs(b[0]-x)+abs(b[1]-y); return s1<s2; });解释:x,y是base,排序的目标是按照将这个点的集合,按照距离x,y的曼哈顿距.原创 2020-11-17 20:46:04 · 5829 阅读 · 0 评论 -
亚马逊软件开发面经
一面1.1401. 圆和矩形是否有重叠只要圆心在如图区域内则表示有解,否则没有。 int distance(int x1,int y1,int x2,int y2){ return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); } bool IncludeRectangle(int x,int y,int x1,int y1,int x2,int y2){ if(x>=x1&&x<=x2&原创 2020-09-11 23:22:26 · 460 阅读 · 0 评论 -
[C++][Leetcode][动态规划]编辑距离
编辑距离算是一个比较经典的问题,可以用于常见的拼写纠错。1.Leetcode 72编辑距离题目描述给定两个单词word1 和word2,计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入: word1 = "horse", word2 = "ros"输出: 3解释...原创 2020-04-03 20:12:07 · 399 阅读 · 0 评论 -
[C++][Leetcode][TopK]前K大问题+前K高频(堆+map)
前两天面试的时候,面试官问了前K大的问题:先是找前K大数,其次是前K高频数。按照面试官的思路一道一道展开~对总体过程中思考的知识点进行一个总结:为什么快排常用? 在大规模数据的时候,快速排序只会线性增长,而堆排序增加幅度很大,会远远大于线性。 堆排序指针寻址会耗费很多时间,但是快速排序的话只是移动到前后位置。 参考博文为什么快排最好 介绍一下C++构造函数? 构造函数没有...原创 2020-03-31 20:01:38 · 667 阅读 · 0 评论 -
[C++][leetcode]dfs+搜索问题
dfs求解的思路:首先是确定开始的状态集合,也就是一个起点还是多个起点。其次,是搜索的集合,有多少种状态可以到达。比如上下左右是四种。最后就是按照题目要求返回求解的内容,常见的就是求连通图的个数。Leetcode980:不同路径III在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示...原创 2020-03-27 21:58:36 · 433 阅读 · 0 评论 -
[Leetcode.125]验证回文串
题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false分析我们使用双指针来做,iii一个指针指向开头,jjj一个指针指向结尾。如果相...原创 2020-01-30 17:06:49 · 109 阅读 · 0 评论 -
[剑指offer][字符串]面试题5:替换空格
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析这道题是一道字符串处理的题,从前向后遍历,如果遇到空格,就将后面的元素向后移动两位。如此一来,如果有n个空格,后面的串就要移动n次,时间复杂度为O(n2)O(n^2)O(n2)。需要明确的是,每次遇到空格处理之后,串尾的长度...原创 2020-01-30 15:11:57 · 148 阅读 · 0 评论 -
[剑指offer]面试题4:二维数组中的查找
二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。这道题需要观察数据的规律,我们会发现从右上角的元素开始比较,就可以轻松判断。如果比右上角的元素大,那么就只能向下着;如果比右上角的元素小,那么只能向左找。public: bo...原创 2020-01-28 22:36:19 · 105 阅读 · 0 评论 -
[leetcode][回溯][排序树]全排列
1.题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]2.代码class Solution {public: vector<vector<int>>res...原创 2019-11-23 20:50:32 · 253 阅读 · 0 评论 -
[leetcode][位运算]两整数之和
1.题目不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-two-integers著作权归领扣...原创 2019-10-12 17:29:14 · 214 阅读 · 0 评论 -
[C语言][散列]平方探测+分离链接
1.平方探测法处理冲突#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度 */typedef int ElementType; /* 关键词类型用整型 */typedef int Index; /* 散列地址类型 */typedef Index Position; /* 数据所在位置与散列地址是同一类型 *//* 散...原创 2019-09-08 21:56:27 · 150 阅读 · 0 评论 -
[leetcode][C++]N叉树的前序遍历
1.题目给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个3叉树:返回其前序遍历: [1,3,5,6,2,4]。2.code2.1递归版本/*// Definition for a Node.class Node {public: int val; vector<Node*> children; ...原创 2019-09-13 17:54:29 · 522 阅读 · 0 评论 -
[leetcode][C++]把二叉搜索树转化为累加树
1.题目给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 ...原创 2019-09-13 11:28:23 · 156 阅读 · 0 评论 -
[leetcode][C++]左叶子之和
1.题目计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-left-leaves著作权归领扣网络所有。商业转载请联系官方授权,...原创 2019-09-12 19:25:50 · 291 阅读 · 0 评论 -
[leetcode][C++]叶子相似的树
1.题目请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。[3,5...原创 2019-09-12 18:29:19 · 205 阅读 · 0 评论 -
[leetcode][C++]用栈实现队列
1.题目使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); que...原创 2019-09-11 20:19:14 · 230 阅读 · 0 评论 -
[Leetcode][C++]用队列实现栈
1.题目使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的...原创 2019-09-11 16:52:44 · 199 阅读 · 0 评论 -
[C语言][图]拓扑排序
1.拓扑排序/* 邻接表存储 - 拓扑排序算法 */ bool TopSort( LGraph Graph, Vertex TopOrder[] ){ /* 对Graph进行拓扑排序, TopOrder[]顺序存储排序后的顶点下标 */ int Indegree[MaxVertexNum], cnt; Vertex V; PtrToAdjVNode W; ...原创 2019-09-08 22:01:40 · 212 阅读 · 0 评论 -
[C语言][图]最小生成树
1.Prim最小生成树算法/* 邻接矩阵存储 - Prim最小生成树算法 */ Vertex FindMinDist( MGraph Graph, WeightType dist[] ){ /* 返回未被收录顶点中dist最小者 */ Vertex MinV, V; WeightType MinDist = INFINITY; for (V=0; V<...原创 2019-09-08 22:00:27 · 612 阅读 · 0 评论 -
[leetcode][C++]二叉树的前序遍历
1.题目给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-tr...原创 2019-09-13 18:08:41 · 175 阅读 · 0 评论 -
[leetcode][C++]二叉树的中序遍历
1.题目给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业...原创 2019-09-13 18:50:54 · 176 阅读 · 0 评论 -
[leetcode][C++]N叉树的后序遍历
1.题目给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个3叉树:返回其后序遍历: [5,6,3,2,4,1].2.code2.1递归版本/*// Definition for a Node.class Node {public: int val; vector<Node*> children; ...原创 2019-09-14 13:41:24 · 231 阅读 · 0 评论 -
C++生理周期(枚举)
1.题目4148:生理周期查看 提交 统计 提示 提问总时间限制: 1000ms 内存限制: 65536kB描述人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,注意力容易高度集中。因为三个周期的长度不同,所以通常三个周期的高峰不...原创 2019-05-13 16:05:51 · 1088 阅读 · 0 评论 -
[leetcode][C++][数组]从排序数组中删除重复项
1.题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 12。 你不需要考虑数组中超出新长度后面的元素。...原创 2019-09-22 13:52:15 · 271 阅读 · 0 评论 -
[leetcode][C++]两两交换链表中的节点
1.题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pai...原创 2019-09-19 22:18:15 · 216 阅读 · 0 评论 -
[leetcode][c++]单值二叉树
1.题目如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示: 给定树的节点数范围是 [1, 100]。 每个节点的值都...原创 2019-09-16 20:08:12 · 159 阅读 · 0 评论 -
[leetcode][C++]二叉树中第二小的节点
1.题目给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明:...原创 2019-09-16 20:06:03 · 128 阅读 · 0 评论 -
[leetcode][C++]平衡二叉树
1.题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,n...原创 2019-09-16 18:09:23 · 319 阅读 · 0 评论 -
[leetcode][C++]二叉树的最小深度
1.题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetc...原创 2019-09-14 16:24:50 · 202 阅读 · 0 评论 -
[leetcode][C++]二叉树的堂兄弟节点
1.题目在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。示例 1:输入:root ...原创 2019-09-14 15:54:30 · 483 阅读 · 0 评论 -
[leetcode][C++]N叉树的层序遍历
1.题目给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[ [1], [3,2,4], [5,6]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-travers...原创 2019-09-14 14:22:19 · 668 阅读 · 0 评论 -
[C语言][排序(终)]排序总结
原创 2019-09-07 21:00:30 · 157 阅读 · 0 评论 -
[C语言][排序(6)]基数排序
1.基数排序(次位优先LSD)首先根据基数进行建桶,比如10进制,我们就建立10个桶,{0,1,2,...,9}以输入序列:64, 8, 216, 512, 27, 729, 0, 1, 343, 125为例第一轮根据个位数的值,分别放入相应的桶中:进行完这一轮之后,我们根据放入桶中的顺序,用链表串起来,进行第二轮,根据十位数放入相应位置:然后根据放入桶中的顺序...原创 2019-09-07 20:28:58 · 195 阅读 · 0 评论 -
[C语言][排序(5)]快速排序
1.快速排序从首位、末尾以及中间三个元素,选出中位数当作pivot,然后将pivot换到倒数第二位,因为倒数第一位已经换成大于pivot的值了。然后从头开始遍历,知道遇到大于pivot的值停止;从末尾开始倒着遍历,直到遇到小于pivot的值停止,然后如果前后指针没有相遇,那么交换两个值。否则跳出去,然后将pivot放到对应的位置,然后进行递归。int Median3( int A[], ...原创 2019-09-07 15:51:56 · 225 阅读 · 0 评论 -
[C语言][链表]一元多项式的乘法与加法运算
1.题目设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -...原创 2019-08-20 17:37:33 · 293 阅读 · 0 评论 -
[C语言][树]树的同构
1.题目给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设...原创 2019-08-23 17:11:47 · 392 阅读 · 0 评论 -
[C++][递归]汉诺塔问题
1.题目4147:汉诺塔问题(Hanoi)查看 提交 统计 提示 提问总时间限制: 1000ms 内存限制: 65535kB描述一、汉诺塔问题 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但...原创 2019-06-24 15:38:21 · 225 阅读 · 0 评论 -
[C++][枚举]拨钟问题
1.题目002:拨钟问题查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述有9个时钟,排成一个3*3的矩阵。|-------| |-------| |-------|| | | | | | ||---O | |---O | | O || | | ...原创 2019-06-22 21:44:02 · 1203 阅读 · 0 评论