
C++基础知识
零下3℃
这个作者很懒,什么都没留下…
展开
-
滑动窗口算法框架
/* 滑动窗口算法框架 */void slidingWindow(string s, string t) { unordered_map<char, int> need, window; for (char c : t) need[c]++; int left = 0, right = 0; int valid = 0; while (right < s.size()) { // c 是将移入窗口的字符 cha.原创 2021-03-06 19:46:16 · 158 阅读 · 0 评论 -
二分搜索框架
int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else if (nums[mid.原创 2021-03-06 10:44:16 · 141 阅读 · 0 评论 -
回溯算法解题套路框架
1、路径:也就是已经做出的选择2、选择列表:也就是你当前可以做的选择3、结束条件:也就是到达决策树底层,无法再做选择的条件result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择...原创 2021-03-05 16:55:03 · 108 阅读 · 0 评论 -
动态规划解题思路
1、确定base case2、确定状态,也就是原问题和子问题中会变化的量3、确定选择,也就是导致状态发生变化的行为4、明确DP数组的定义原创 2021-03-05 16:37:43 · 107 阅读 · 0 评论 -
数组和链表的特性以及优缺点
数组:连续存储空间,便于随机访问,通过索引可以快速找到对应元素,而且相对可以节约存储空间,但是正是因为连续存储,所以内存必须一次性分配够,所以如果数组想要扩容,就必须重新申请一块新的内存空间,然后将现有的数据全部复制过去,时间复杂度为 O(n) ;而且如果你想在中间插入或者删除元素的话,每一次都需要搬动后面的元素,所以时间复杂度都为 O(n)。链表:元素不连续,通过指针访问下一个元素,所以不存在数组的扩容问题,如果知道某一元素的前驱和后继指针,操作指针就可以删除当前元素,时间复杂度O(1) 。但是因为.原创 2021-03-05 16:34:40 · 530 阅读 · 1 评论 -
二维数组作为函数参数如何传递(C++)
首先,我们要明白,C++语言里面是没有二维数组,内存寻址都是当做一维数组处理的,下面介绍两种方法二维数组指针 voidfuntion_name(int(*a)[10],intm,intn);//注意使用括号 或者 voidfuntion_name(inta[][10],intm,intn); 二维数组的引用 voidfuntion_name(int(&a)[5][10],intm,intn);//与指针形式不同int(&a)[10]代表一维...原创 2020-12-21 21:18:23 · 350 阅读 · 0 评论 -
蓄水池抽样算法原理
参考:蓄水池抽样转载 2019-11-19 12:33:35 · 205 阅读 · 0 评论 -
C++二进制操作符
C++中常用的二进制运算符有六个,以下分别介绍:1. & : 与操作.作用于两个二进制数,当然也可以对整型数据进行操作(当两边为整型数据会自动转化为二进制数).只有当对应位全为1时结果为1: 01011001 &00101001 结果为:000010012. | :或操作.和1的与操作类似.用来合并值.只有当两个对应位都为0,结果位为0: ...原创 2019-03-18 23:08:47 · 3873 阅读 · 0 评论 -
sort函数用法
对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。(一)为什么要用c++标准库里的排序函数Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!(二)c++标准库里的排序函数的使用方法I)...转载 2019-03-03 11:57:45 · 169 阅读 · 0 评论 -
c++中长整型和基本整型数的区别
由于C++标准中并未指定int、long、long long等具体的字节数(只规定int不少于16位,long不少于32位,longlong不少于64位,并且sizeof(int) <= sizeof(long) <= sizeof(long long)),所以不同开发环境中的三者所占用位数可能不一致,具体的占用位数还得看实际的编译器实现。一般来说: 32位系统下:int-...原创 2019-03-03 10:16:40 · 10833 阅读 · 2 评论 -
C++中string和string.h的区别
&lt;string.h&gt; 是旧的 C 头文件,对应的是基于 char 的字符串处理函数; 是包装了 std 的 C++ 头文件,对应的是新的 string 类; 是对应于旧 C 头文件的 std 版本。(包含std) 是c++的头文件,其内包含了一个string类,string s1就是建立一个string类的对象&lt;string.h&gt; 的c语言的东西并无类,所以不能 st...原创 2019-01-23 12:37:31 · 1274 阅读 · 0 评论