-
链表合并
合并两个有序链表21.合并两个有序链表1.垃圾写法# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) ->...…
-
区间合并
示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].垃圾写法class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: if len(intervals) <= 1: re...…
-
堆
堆是优先队列(Priority Queue)的实现,可以用于 动态选取 一个集合中的最值元素。堆通常指二叉堆,堆包括最大堆和最小堆:最大堆的每一个结点(除了根结点)的值不大于其父结点;最小堆的每一个结点(除了根结点)的值不小于其父结点。python 有内置堆模块,可以堆list直接操作import heapq方法: 堆操作:插入(叶子节点上调),删除(堆顶元素下沉)堆创建:非叶子节点下沉(从最后一个非叶子节点开始)最小堆:最小堆任何一个父节点的值,都小于等于它左右孩子节点的值创建...…
-
判定是否2的幂
231.2的幂给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。垃圾解法2的幂,转换成2进制就是1000000...这样子,只有1个1,且不为负所以:class Solution: def isPowerOfTwo(self, n: int) -> bool: if n<0: return False ...…
-
排序
快排 堆排序 归并排序 冒泡方法一:快速排序复杂度分析时间复杂度:基于随机选取主元的快速排序时间复杂度为期望 O(nlogn),其中 n 为数组的长度。详细证明过程可以见《算法导论》第七章,这里不再大篇幅赘述。空间复杂度:O(h),其中 h 为快速排序递归调用的层数。我们需要额外的 O(h) 的递归调用的栈空间,由于划分的结果不同导致了快速排序递归调用的层数也会不同,最坏情况下需 O(n) 的空间,最优情况下每次都平衡,此时整个递归树高度为 nlogn,空间复杂度为 O(logn...…
-
汉明距离
461. 汉明距离 477.汉明距离总和1. 461. 汉明距离class Solution: def hammingDistance(self, x: int, y: int) -> int: return bin(x^y).count('1')2. 477.汉明距离总和class Solution: def totalHammingDistance(self, nums: List[int]) -> int: n = len(n...…
-
二叉树的前中后序遍历
1.递归1.1 前序# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def postorderTraversal(self, roo...…
-
二叉树
二叉树定义 遍历 深度优先 Depth-First-Search,DFS 递归 前序 中序 后序 迭代 前序 中序 后序 ...…
-
pyenv 和 vitualenv
vituralenv和pyenv场景1. pyenv 是一个开源的 Python 版本管理工具,可以轻松地给系统安装任意 Python 版本,想玩哪个版本,瞬间就可以切换。有了 pyenv,我们不需要再为系统多版本 Python 共存问题而发愁,也不用为手动编译安装其他 Python 版本而浪费时间,只需要执行一条简单的命令就可以切换并使用任何其他版本,该工具真正地做到了开箱即用,简单实用。2. virtualenv 是一个用来创建完全隔离的 Python 虚拟环境的工具,可以为每个项目工...…
-
./configure,make,make install的作用
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。1、configure,这一步一般用来生成 Mak...…