数据结构与算法
Glimmer_r
这个作者很懒,什么都没留下…
展开
-
位运算刷题技巧
刷题时如果出现O(1)的空间复杂度要求,或者是不能用加减乘数的符号来实现加减乘除,可以考虑位运算。以下的相关题目均为Leetcode上的题目。几个知识点:1、位运算是基于补码进行的。2、最小的负数补码为0b1000....000,其不存在原码和反码。例如一个8位的整数能表示的范围是[-128, 127],其中-128的补码为0b1000 00003、如果a^b=c,那么有c^b=a和c^a...原创 2020-03-02 19:22:47 · 801 阅读 · 0 评论 -
Python实现栈的常用语法
单调栈单调栈里的元素是单调的。它的功能通常是:给定一个数组A,对每个给定的索引i,寻找数组中第一个大于(或小于)A[i]的位置。例如,我需要寻找数组中第一个大于A[i]的位置,则使用递减单调栈。假设给定的数组是[1,5,2,6,8,4],下标从0开始,我们很容易可以得到结果res=[1,3,3,4,-1,-1]。过程是这样的第一个循环:1入栈,此时stack=[1]第二个循环:5比栈顶...原创 2020-02-18 13:44:59 · 635 阅读 · 0 评论 -
Python实现二叉树刷题的常用语法
二叉树结构class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None前序遍历迭代# 迭代法,利用栈的思想,先进先处理def preorderTraversal(self, root): if not r...原创 2020-02-15 00:18:42 · 893 阅读 · 0 评论