C++
mingjam
learning by coding
展开
-
算法 散列hash的含义以及在leetcode中的使用方法
散列要解决的问题有m个数,要分别知道他们的每一个是否在n个数中出现过,以及出现了多少次,可以用一个整型的散列表来解决这个问题。原始思路:对m个数分别读入,然后在n个数中逐一比对,暴力求解,算法复杂度o(MN)初级思路:读入n个数,以数值大小直接作为下标,建立一个hash表,算法复杂度o(M+N)进阶思路:读入n个元素(不仅局限在数,还可以是字符串等),把他们通过函数转为一个整数,使这个整...原创 2019-05-19 13:26:22 · 501 阅读 · 0 评论 -
C++基本语法和刷题常用方法
熟悉最常使用的C语言语法掌握C/C++程序如何使用gdb调试会用C++新增的特性堆,栈,链表树图基本算法动态规划最常使用的C语言语法获取pi的值:const double pi = acos(-1.0);C语言中的逻辑运算符都是短路运算符,一旦能够确定整个表达式的值,就不再继续计算编程实现计算int类型数据的取值最大值和最小值:#include<cstdio>...原创 2019-06-19 20:11:37 · 1733 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
深度优先搜索可以用这个图来很好的帮助我们理解DFS,DFS是一种枚举所有完整路径来遍历所有情况的搜索方法,可以使用递归来很好的实现DFS,递归式可以理解为:void PreorderRecursive(Bitree root){ if (root) { visit(root); PreorderRecursive(root->lchild); Preorde...原创 2019-05-29 17:39:30 · 568 阅读 · 0 评论 -
C++调用涉及数组的函数需要传入数组长度的原因
在写一个简单的选择排序时,发现如果不在调用排序函数时传入数组大小,程序得不到预期结果,经过调试,发现原来在不同地方sizeof(A)的结果是不同的,具体如下 #include<cstdio> #include<iostream> using namespace std; void selectSort(int A[],int n){ //int n = size...原创 2019-05-18 14:26:21 · 1375 阅读 · 0 评论 -
String的产生原因和具体用法
为什么要用String,char[]不好吗?用string而不用char[],是C++相比C,进步的地方,C++对string封装了很多实用的操作String是什么数据类型,是原始数据类型还是自定义的呢?是STLString都有哪些方法如下String的基本概念String的定义#include<string>using namespace std;int ...原创 2019-05-20 14:36:40 · 270 阅读 · 0 评论 -
two pointers 双指针应用场景及方法
解决的问题给定一个递增的正整数序列和一个正整数M,求序列中两个不同位置的数a和b,使得他们的和恰好等于M,输出所有满足条件的方案将两个有序的子序列归并为一个单一的有序序列直观解释用两个下标i,j 对序列进行扫描(可以同向扫描,亦可以异向扫描),以较低的复杂度解决问题方法的示例代码void find(int a[],int length, int M){ int i = 0; i...原创 2019-05-20 14:06:45 · 687 阅读 · 0 评论 -
C++ STL 使用说明
名称简介vector变长数组map映射vectorvector 定义:vector<typename> vi;具体以整型为例:声明: vector<int> a;迭代器声明:vector<int>::iterator it;迭代器初始化: it = a.begin();输出迭代器所指的元素 printf("%d"...原创 2019-05-20 14:08:30 · 196 阅读 · 0 评论 -
递归算法的使用原因和应用方法
递归的使用原因原问题无法解决,用分治的思想将其分解,如果分解后得到的子问题仍然无法解决,就再次分解,直到子问题的规模小到可以直接解决。然后把子问题的解合并得到原问题的解什么是递归通俗的直观的解释是:反复调用自身函数,但是每次把问题范围缩小,知道范围缩小到可以直接得到边界数据的结果,然后再在返回的路上求出相应的解写递归函数的步骤找递归的边界,即什么样的问题规模是可以直接求解的找递归式,...原创 2019-05-20 14:08:50 · 657 阅读 · 0 评论 -
链表的使用
链表的定义 链表的增删改查定义链表定义节点类型struct node{ int data; node* next;}; 给链表节点分配内存空间malloc C语言中用来申请动态内存的函数:typename* p = (typename*) malloc(sizeof(typename))使用结束之后可以通过free() 函数释放内存:free(p)new ...原创 2019-06-04 19:15:42 · 465 阅读 · 0 评论