03 2019 档案
摘要:第6章 执行期语意学 6.1 对象的构造和析构 constructor和destructor的安排 另外也很有可能在这个区段的结束符号(右大括号)之前被生出来, 即使程序分析的结构发现绝不会进行到那里 , 一般而言会把object尽可能放置在使用它的那个程序区段附近, 这么做 可以节省非必要的对象产
阅读全文
摘要:第5章 构造, 析构, 拷贝语意学 [TOC] 5.1 "无继承"情况下的对象构造 C struct的Point声明 抽象数据类型 总的来说, 观念上, Point class有一个相关的default copy constructor, copy operator和destructor. 然而它们
阅读全文
摘要:第4章 Function语意学 [TOC] 有两个成员函数这么定义 考虑下面是怎么调用函数的 并能确定函数的调用方法. C++支持三种类型的member functions: static, nonstatic和virtual, 每一种类型被调用的方式都不同. 虽然不能确定normalize()和m
阅读全文
摘要:自定义别名 CUI程序 GUI程序 SAL 语法, 主要是出参, 入参 linux所有资源可抽象为file descriptor(fd), 文件句柄 windows所有资源可抽象为HANDLE, 指向内存中的对象 字符集处理 字符串定义类型 windows上其实不存在 , 这是一个宏, 会根据字符集
阅读全文
摘要:第3章 Data语意学 [TOC] 类X, Y, Z, A具有如下关系 C++ class X { int a = 0; }; class Y : public virtual X {}; class Z : public virtual X {}; class A : public Y, publ
阅读全文
摘要:第2章 构造函数语意学 2.1 默认构造函数的构造 考虑如下代码 上述代码是否会合成默认的构造函数? 这里有两个问题要弄明白: 编译器需要 程序需要 : 上述代码就是"程序需要", 编译器会 声明 一个构造函数, 但是并 不会合成出来 , 所以还是没有构造函数, 在这种情况下为程序执行初始化应该是程
阅读全文
摘要:第1章 关于对象 [TOC] 在C语言中, "数据"和"处理数据的操作(函数)"是分开来声明的, 也就是说语言本身并没有支持"数据和函数"之间的关联性. 把这种程序方法称为程序性, 有一组"分布在各个以功能为向导的函数中"的算法所驱动, 它们处理的是共同的外部数据. C++支持封装的性质并没有带来任
阅读全文
摘要:二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 不是很懂, 待解决 大体思路是找数组中比最后一个元素大的第一个元素的位置, 这个元素之后的所有元素要比最后一个元素大, 否则
阅读全文
摘要:"数字在排序数组中出现的次数" 题目描述 统计一个数字在排序数组中出现的次数。 利用map建立映射关系, 做题以来思路最快, 变的最快, 提交一次过
阅读全文
摘要:"1到n整数中1出现的次数" 题目描述 输入一个整数n, 求1~n这n个整数的十进制表示中1出现的次数. 例如, 输入12, 1~12这些整数中包含1的数字有1, 10, 11和12, 1一共出现了4次 class Solution { public: int numberOf1(int n) {
阅读全文
摘要:矩形覆盖 题目描述 我们可以用2 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 1的小矩形无重叠地覆盖一个2 n的大矩形,总共有多少种方法? 斐波那契数列依旧, class Solution { public: int rectCover(int number) { int ret = 0;
阅读全文
摘要:"机器人的运动范围" 题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(
阅读全文
摘要:"矩阵中的路径" 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s
阅读全文
摘要:"滑动窗口的最大值" 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6
阅读全文
摘要:数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据
阅读全文
摘要:"二叉搜索树的第k个结点" 题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 使用栈遍历树, 当遍历到右子树时, 已经是从最小的开始了 中序遍历, 比较简陋 class Solution { public: v
阅读全文
摘要:"序列化二叉树" 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题意没明白, 想了半天, 明白题意又不知道怎么解, 又想了半天, 看了答案没懂, 又是半天, 哎...
阅读全文
摘要:"表示数值的字符串" 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2"," 123","3.1416"和" 1E 16"都表示数值。 但是"12e","1a3.14","1.2.3","+ 5"和"12e+4.3"都不是。 书上版本
阅读全文
摘要:"正则表达式匹配" 题目描述 请实现一个函数用来匹配包括'.'和' '的正则表达式。模式中的字符'.'表示任意一个字符,而' '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab ac a"匹配,但是与"aa.
阅读全文
摘要:"删除链表中重复的结点" 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1 2 3 3 4 4 5 处理后为 1 2 5 非递归版, 新建一个头结点 递归版 剑指offer版
阅读全文
摘要:"把字符串转换成整数" 题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 改了又改, 有空格滤除, 溢出判断, 感觉还不是很完
阅读全文
摘要:"字符流中第一个不重复的字符" 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的
阅读全文
摘要:"和为S的连续正数序列" 题目描述 输入一个正数, 打印出和为s的连续正数序列(至少含有两个数). 例如, 输入15, 由于1+2+3+4+5=4+5+6=7+8=15, 所以打印出3个连续序列1~5, 4~6, 7~8 使用两个游标left和right, left始终小于(sum+1)/2, 若当
阅读全文
摘要:"和为S的两个数字" 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 使用两个游标head和tail分别指向数组头部和尾部, 两个游标向彼此方向移动.
阅读全文
摘要:"扑克牌顺子" 题目描述 从扑克牌中随机抽取5张牌, 判断是不是一个顺子, 即这5张牌是不是连续的. 2~10为数字本身, A为1, J为11, Q为12, K为13, 大小王看成是任意数字并在数组中用0表示 新学一招, bitmap排序, 传输门 "bitmap对海量无重复的整数排序" 哈希表法
阅读全文
摘要:"翻转单词顺序列" 题目描述 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变. 为简单起见, 标点符号和普通字母一样处理. 例如输入字符串"Iam a student.", 则输出"student. a am I". 牛客上看的这个简洁 class Solution { publ
阅读全文
摘要:"左旋字符串" 题目描述 字符串的旋转操作是把字符串前面的若干字符移到字符串的尾部. 定义一个函数实现字符串左旋转操作的功能. 不如, 输入字符串"abcdefg"和数字2, 该函数将返回左旋转两位等到的结果"cdefgab" 利用string的构造函数, 左闭右开原则, 偷懒了, 罪过罪过...
阅读全文
摘要:"数组中重复的数字" 题目描述 在一个长度为n的数组里的所有数字都在0到n 1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
阅读全文
摘要:"第一个只出现一次的字符位置" 题目描述 在一个字符串(0 vt; vt.resize(tableSize); for (int i = 0; i my_map; for (auto i = 0; i
阅读全文
摘要:"丑数" 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路: 当前丑数之前的某个数乘以2后小于当前丑数, 这个数之后的所有丑数乘以2后都大于当前丑数,
阅读全文
摘要:"字符串的排列" 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 看看牛客评论
阅读全文
摘要:"把数组排成最小的数" 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 学习如何把数字转换字符串的函数了 此处cmp函数需要用static关键字, 不知道为什么
阅读全文
摘要:"圆圈中最后剩下的数" 题目描述 0, 1, ..., n 1这n个数字排成一个圆圈, 从数字0开始, 每次从这个圆圈里删除第m个数字. 求出这个圆圈里剩下的最后一个数字 第一次接触list容器, 迭代器也是第一次出现 主要是边界的判断
阅读全文
摘要:"按之字形顺序打印二叉树" 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 没有堆栈来回倒的过程 与从上到下打印树只相差一个翻转函数和奇偶判断 与上面方法相比, 多一步倒换堆栈的过程, 若不用
阅读全文
摘要:"二叉树的下一个结点" 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路: 若节点有右节点, 返回右节点的左子节点的左子节点直至叶子节点 若节点没有右节点, 则返回该结点的父节点支路的右节点
阅读全文
摘要:"把二叉树打印成多行" 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 和从上往下打印二叉树类似 "传送门" 两个栈来回倒 利用队列
阅读全文
摘要:"链表中环的入口结点" 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 第一步两个节点, 一快一慢, 若有环则相遇 当快慢节点相遇时, 慢结点走了x个节点, 快结点恰巧走了2x个节点, 2x = k n + x, k为1, 2,..., 此时令其中一个节点等于头
阅读全文
摘要:"对称的二叉树" 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 原来想利用中序左右对称来做, 后来发现不可行, 因为当树的元素对应值都相同时失效 class Solution { public: vector vt; voi
阅读全文
摘要:"构建乘积数组" 题目描述 给定一个数组A[0,1,...,n 1],请构建一个数组B[0,1,...,n 1],其中B中的元素B[i]=A[0] A[1] ... A[i 1] A[i+1] ... A[n 1]。不能使用除法。 大体思路是构造一个二维数组, 数组下标m=n时为1, 构造一个下,
阅读全文
摘要:"不用加减乘除做加法" 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、 、 、/四则运算符号。 思路: 当没有进位时, 两个数的二进制和为异或结果, 当有进位时, 对应两者二进制的位为都是1, 此时用与操作, 然后左移一位, 此时该数就是二进制的进位 class Solution
阅读全文
摘要:"数组中只出现一次的数字" 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 异或操作找数字, 学习了, 另外注意一下`num 1; } return counts; } bool isBit1(int num, unsigned int in
阅读全文
摘要:"平衡二叉树" 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 不是很懂, 一边递归一边判断, 可以消除节点遍历两次 递归判断布尔变量方法学学, 好像用到两次了, 节点遍历两次
阅读全文
摘要:"二叉树的深度" 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 利用队列的先进先出, 思想是弹出当前层, 插入下一层 树的遍历, 插一句It doesn't work why, it works why?
阅读全文
摘要:"两个链表的第一个公共结点" 题目描述 输入两个链表,找出它们的第一个公共结点。 思想: 先比较两个链表的长度, 让得出差值, 让长的先走长出的节点数目, 然后两个链表一起走, 有相同节点时, 指向链表的游标会碰在一起, 此时游标就是返回值, 时间复杂度O(m+n)? 利用栈, 先把两个序列分别压入
阅读全文
摘要:"连续子数组的最大和" 题目描述 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度O为(N) 动态规划(不是很清楚), 大体思路是前面数字(包括当前数字)相加的和还没有当前数字大, 则以当前数字为起点, 重新组成子数组
阅读全文
摘要:"最小的K个数" 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 未完, 待续, 好像设计堆排序 先排序在遍历, 此处使用插曲排序
阅读全文
摘要:数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0 版本一: map映射, 哈希法, 上午刚学到的现在
阅读全文
摘要:二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 递归版: 树的先中后序的处理就理解成按固定次序处理一个序列, 从大到小, 即中序, 通过指针传回上次递归的值(递归还能这么玩)
阅读全文
摘要:复杂链表的复制 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 版本一: 克隆每个节点, 并在被克隆的节点之口插入该克隆结
阅读全文
摘要:二叉树中和为某一值的路径 题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 注意, 是从跟节点一直到叶子节点的所有路径的val加起来,
阅读全文
摘要:栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(
阅读全文
摘要:从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 两种方法, 一栈, 一种队列 栈: 利用两个栈, 第global保存每一层父节点, local保存每一层的子节点, 先左后右的顺序压栈, 当global栈空时, 把local栈中元素压入global中并清空loca
阅读全文
摘要:包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路, 若使用标记用来标记最小元素的位置, 若弹出的是最小元素, 还需要次最小元素的标记位, 若再弹出的是次最小元素, 又需要次次最小元素, 依次类推, 则不能确定需
阅读全文
摘要:二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 先序遍历的变形
阅读全文
摘要:二叉树的镜像 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 记录一下, 刷题目前最苦逼的一次, 调试N次没通过, 最后一步一步粘的答案排错
阅读全文

浙公网安备 33010602011771号