摘要:
组合恒等式: 可得: C[i][j] = C[i][j-1] +C[i-1][j-1]; 此式可用于递归算法,卡特兰数问题等等 卡特兰数的一个公式: h[n]=C[2n,n]−C[2n,n−1](n=0,1,2,...) 典例:求出栈序列的所以情况: #include<cstdio> #define 阅读全文
摘要:
1. str1 = input()s = '1234567890abcdefABCDEF'c = ""for item in str1: if item in s: c = c + item # print(str1.find(c[0]))# print(str1.find('-'))if c == 阅读全文
摘要:
实现循环数组主要有两种方式: 1.将数组复制一次,接在原数组的后面。 2.遍历时,遍历2*n次,然后 i%n 靠取模运算得到下标。 阅读全文
摘要:
参考:https://leetcode-cn.com/problems/next-greater-element-ii/solution/cong-po-su-jie-fa-de-jiao-du-qu-li-jie-d-trht/ 对于此类问题,最直接的方法就是两重遍历,但是时间复杂度太高。 之所以 阅读全文
摘要:
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。 在从小到大的排序数组中, lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在 阅读全文
摘要:
1.按位与 &是按位与,对应位都为1时该位得1,否则得0。 i&(i-1) 表示将二进制表示的i 的最右边的1变为0。 &与&&不同,&&是逻辑运算。 (1).(i & (i - 1)) == 0)&&(i>0) 用来判断i是否是2的整数幂。 (2).&还用于屏蔽二进制的某些位,一个二进制数 &0是 阅读全文
摘要:
一维数组求区间和: preSum 方法能快速计算指定区间段 【i,j】的元素之和。它的计算方法是从左向右遍历数组,当遍历到数组的i位置时,preSum 表示 i 位置左边的元素之和。 推导过程引用自:https://leetcode-cn.com/problems/range-sum-query-i 阅读全文
摘要:
对于 1 和 0 的翻转,有三种思路: 1.用 1 - 当前值 2.用 1 ^ 当前值(这个符号是 异或,相同为 0,相异为 1) 3.1>>当前值 关于>>位移位运算符,见位运算符(&|^) 阅读全文
摘要:
首先是c++中的哈希表和Python中的字典: 一.unordered_map 哈希表是一个键值对型容器,基于哈希表(hash_table)这种数据结构,理解上有些类似于字典,不同于基于红黑树的map。 头文件:#include<unordered_map> 创建表 unordered_map<ke 阅读全文
摘要:
Python 中print()函数的用法真的是十分丰富,遇到一个记一个。 print()函数两个参数sep和end。 使用方法: 1.sep = ‘......’,使用引号中的字符来分割print要打印的每一个量,如果没有指定,默认为一个空格。 2.end = '......',使用引号中的字符来作 阅读全文