#include <stdio.h> int main() { int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%p\n%p\n", a[0], &a[0]); printf("%p\n%p\n%p\n%p\n", a[0] + 1, (&a[0] + 1), (&a[0]) + 1, a + 1); int (*p)[3] = &a[0]; int (*q) = a[0]; // printf("%p\n%p", ) prin…
#include <stdio.h> int main() { int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%p\n%p\n", a[0], &a[0]); printf("%p\n%p\n%p\n%p\n", a[0] + 1, (&a[0] + 1), (&a[0]) + 1, a + 1); int (*p)[3] = &a[0]; int (*q) = a[0]; // printf("%p\n%p", ) prin…
colab使用教程 在这里稍微整理一下colab的使用教程,以便自己日后复习,或他人观看 现在感觉自己学习的过程像是在不断的刷漆,一遍又一遍,干了再刷,刷了再干,在此过程中逐渐凝实,并最终内化为自己的东西 首先colab是要配合google drive来进行操作的 我们先登入google drive 左上角new -> more -> google colaboratory 有关colab的介绍是什么,有什么强大的功能我就不说了,网上有很多人提到 左上角可以修改notebook的名字,我这里叫env,就是用来配置环…
莫里斯遍历 有关二叉树的遍历算法 非递归,无额外空间,时间复杂度O(n) 空间复杂度O(1) 很巧妙的遍历算法 核心思想就是利用树节点中的空指针 考虑非递归算法,如果我们不用栈的话,最主要的问题就是遍历完一个节点的左子树后怎么回到这个节点并遍历他的右子树 在遍历左子树的时候,最后一个遍历的节点一定是二叉树中序遍历中,当前节点的前一个节点 也就是当前节点左子树的最右边的节点 我们可以把这个前驱节点的右子树设为当前节点,这样遍历完左子树的时候,也就是遍历完这个前驱节点的时候,我们可以通过先前设置的那个指针回到当前节点,…
排序 区分的主要依据就是算法是否是基于比较的 leetcode排序 算法可视化 图是leetcode题解上的 这里不打算具体的说计数排序和桶排序,因为思路较为简单 代码均在leetcode上测试过,可以放心的使用 选择排序 class Solution { public: vector<int> sortArray(vector<int>& nums) { int n = nums.size(); for (int i = 0; i < n; i++) { int minn =…
c++新特性 nullptr 空指针 防止隐式的类型转换 NULL 和 0 constexpr 常量表达式 constexpr函数可以使用递归 constexpr int fibonacci(const int n) { return n == 1 || n == 2 ? 1 : fibonacci(n-1)+fibonacci(n-2); } 并且从c++14开始,constexpr函数内可以使用局部变量,循环,分支等简单语句 if/switch 语句初始化 c++17让我们可以在if或switch时对变量进行初…