随笔分类 - c++学习
摘要:面试题: 1.考虑边际问题(将字符串转换为数字,考虑不是数字的字符,负数) 2.考虑特殊情况 (得到链表的第k个数,都知道使用两个指针,但要考虑 k为0,链表的长度小于k的情况) 3.定义一个空的类型,没有任务成员变量和成员函数,求sizeof, 得到的结果是1。声明实例时,必须在内存中占一定的空间
阅读全文
摘要:对于64为系统: typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE==64 typedef long int int64_t; #else typedef long
阅读全文
摘要:1. 最简单的思路,对每个值,遍历与其逆序的数组对;但时间复杂度太高; 2. 归并排序的思路: 先将数组分隔成子数组,先统计出子数组内的逆序对的数目,然后统计两个相邻子数组之间的逆序对的数目;
阅读全文
摘要:继承: 联系一起的类有层次关系。 基类: 层次关系的根部 派生类: 基类负责定义在层次关系中所以类共同拥有的成员,派生类定义其各种特有的成员。 基类类型相关的函数, 派生类不做改变直接继承的函数 某些函数基类希望派生类个字定义适合自身的版本,此时基类就将这些函数声明成虚函数。 派生类必须通过使用类派
阅读全文
摘要:定义一个类,就要显式或隐式定义此对象的拷贝,移动,赋值与销毁: 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 拷贝构造函数:参数是自身类类型的引用 class Foo{ Foo(); Foo(const Foo &); } 如果没有自己定义拷贝构造函数,编译器会定义一个,与合
阅读全文
摘要:map set multimap (关键字可重复出现) multiset 无序 unordered_map (用哈希函数组织的map) unordered_set unordered_multimap unordered_multiset pair 类型: utility pair<string,
阅读全文
摘要:容器为模板类 顺序容器 vector deque (双端队列) list (双向链表) forward_list(单向链表) array (固定大小数组) string ( 与vector 相似)保存字符, substr(), inset(), assign,append(), repace(),
阅读全文
摘要:简单的思路: 深度优先搜索: python python 中传参数? foo=1 # 指向int数据类型的foo(foo 没有类型) lfoo=[1]# 指向list类型的lfoo。 python中 strings, tuples, numbers 不可更改, list, dict 可更改 foo=
阅读全文
摘要:深度遍历: 如果有5个站, 就有5种方案: 1-2-3-4-5 2-3-4-5-1 3-4-5-1-2 。。。 判断每一种是否可能: 使用贪心法的最优子结构: 如果0到i时的累积油量为负值,则0-i开始的值都不行, 从 i开始判断。 并累积总的 diff, 看是否有解
阅读全文
摘要:解法一: 先进行排序,然后比较 但sort不一定让用 解法二: 遍历每一个数nums,定义两个值 pre,next; pre=nums--, next=nums++;找是否存在 但是这个解法里根本没有考虑已经被考虑的元素: 假设为【1,2,3,4】 从1 开始 1 得到0-5; 接着考虑2: 2 也
阅读全文
摘要:最简单的思路: 深度遍历,得到所有的可能,找最小的结果 深度遍历时,每次计算左边,与右边的值。 有两个样例不能通过,时间复杂度太高。。 考虑动态规划求解:记录每一层的结果,来计算下一层。 从底往上进行计算: 到达当前位置的最小值
阅读全文
摘要:从一个list->BST 还要height balance 解题思路: 每次找中点作为root,将中点左边的作为左子树的节点,中点右边的作为右子树的节点。 但是考虑树要找中间节点, 所以我最开始的思路是: 将list 转换为一个vector, 然后就可以easy的找中点和左,右两个部分了。 但是有一
阅读全文
摘要:递归解法: 从先序遍历中得到树的根节点,从中序遍历中得到左右数的组成节点。 更好理解的解法:
阅读全文
摘要:最简单的思路: 将矩阵中的每个点当做起始点判断,是否可以从这一点开始,找到一条路径 这一思路也可以利用深度优先搜索实现,将每一个点生成一个树,判断是否有解:
阅读全文
摘要:每次二分有四种情况: 1. nums[mid] = target,则可以返回mid 2. nums[mid] < nums[right],说明在[mid, right]区间是右边递增的区间,然后判断target是否在这个区间内 1)如果nums[mid] < target <= nums[right
阅读全文
摘要:解题思路: 要生成子集,对于vector 中的每个数,对于每个子集有两种情况,加入或不加入。 因此代码: 但是这样会造成许多重复的子集,因为重复的情况我们只需要考虑一次.可以分为拿和不拿. 如果拿的话就按照正常往下一层搜索, 如果不拿当前值的话, 那么也要跳过接下来和当前值相等的元素.
阅读全文
摘要:首先暴力解法,求出所以的排列, 排序,求第k个 超时。。。 考虑数学归纳法: n个数有n!个排列组合.
阅读全文
摘要:左子树要比根节点小,右子树要比根节点大 数组{1,2,3,4,5,6} 最大数的跟节点可能是1,2,3,4,5,6, 当是1 时, {2,3,4,5,6} 为右子树 当是2时, {1} 位左子树,{3,4,5,6}为右子树 当为3时,{1,2}为左子树,{4,5,6}为右子树 选择一个根节点时,排列
阅读全文
摘要:最简单的想法,中序遍历二叉树: 递归中序遍历二叉树,得到一个中序遍历的序列 判断这个序列是不是有序 或者直接判断: 中序遍历,后面的节点要比前面遍历的节点值大
阅读全文
摘要:第一种最简单的方法:递归求解: 要求uniquePaths(m,n)=uniquePaths(m-1,n)+uniquePaths(m,n-1)(m>1,n>1) uniquePaths(m,n)=uniquePaths(m-1,n)(,n==1) uniquePaths(m,n)=uniquePa
阅读全文

浙公网安备 33010602011771号