自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 收藏
  • 关注

原创 C++ 中 string unordered_map unordered_set max

string 求字符串的长度 在haystack字符串中找到needle字符串的位置,如果没有,则返回-1 int pos = haystack.find(needle) unordered map (这就是hash table) 声明: unordered_map<int, int > m 向map中添加元素: m[nums[i]] = i; 在map中发现该元素: if(m....

2020-04-26 15:26:43 1014

原创 C++ 知识点笔记

c++ int类型默认值 在全局域中声明的变量会自动初始化为0 如果变量是在局部域中定义的,则系统不会向它提供回初始值0,这些对象被认为是未初始化,其值随机(有的编译器可能答会为你初始化为0,但千万别依赖于这种可能行为,因为它会给你的程序带来未定义的行为) 局部变量和全局变量 局部变量:在一个函数内部定义的变量就是局部变量。 作用范围:只局限在定义它的本函数体之内,即只有在该函数体内才能使用该变量...

2020-04-25 13:10:27 587

原创 Java C++ Python 哈希表 栈 字符串等非常实用的操作

Java 创建栈: Stack<Character> st =new Stack<Character>(); 创建哈希表: HashMacp<Character, Character> map=new HashMap<Character, Character>(){{ put(')','('); put(']','('); put('}','{');...

2020-04-14 12:36:47 521

原创 LeetCode各题的视频讲解地址

以下记录的是各个题较好的视频讲解地址及视频中的代码。 持续更新中。 LeetCode 207. 课程表 https://www.youtube.com/watch?v=zkTOIVUdW-I LeetCode 208. 实现Trie(前缀树) https://www.bilibili.com/video/av38557911/ 该视频中有C++, Java, Python三种语言的版本 C++和J...

2020-04-11 23:41:41 3886

原创 寻找两个有序数组的中位数

以下内容整理自bilibili的视频,非本人原创。 主要目的是为了自己复习起来更方便。 、

2020-04-08 16:52:01 226

原创 二分搜索

二分搜索/Binary Search 二分搜索的优点: 二分搜索也称对数搜索,其时间复杂度为O(logn),是一种非常高效的搜索 二分搜索的缺点: 要求带查找的数组或区间是排序的 -若要求对数组进行动态地删除和插入操作并完成查找,平均复杂度会变为O(n) -采取自平衡的二叉查找树 ----可在O(nlogn)的时间内用给定的数据结构构建出一棵二叉查找树 ----可在O(logn)的时间内对数据进行...

2020-04-06 23:21:55 298 1

原创 算法中的易错知识点集锦

子序列不同于子数组 子数组一定是连续的,子序列不一定是连续的。 更新中…

2020-04-06 20:52:29 380

原创 深度优先搜索与广度优先搜索

深度优先搜索 深度优先搜索(DFS)的递归实现 利用递归去实现DFS可以让代码看上去很简洁 递归的时候需要将当前程序中的变量以及状态压入到系统的栈里面 压入和弹出栈都需要较多的时间,如果需要压入很深的栈,会造成运行效率低下 DFS的非递归实现 栈的数据结构也支持压入和弹出操作 完全可以利用栈来提高运行效率 递归指的是利用进程中的系统栈结构,用户态的栈结构不属于递归 DFS的复杂度分析 由于DFS是...

2020-04-06 20:39:57 351

原创 面试中常用的算法——排序

学习算法的好处 学习算法的过程其实是一个提高思维能力的过程。 基本的排序算法(简单直接帮助迅速写出没有bug的代码) 冒泡排序/Bubble Sort 插入排序/Insertion Sort 常考的排序算法(解决绝大部分设计排序问题的关键) 归并排序/Merge Sort 快速排序/Quick Sort 拓扑排序/Topological Sort 其他排序算法(掌握好它的解题思想能开阔解题思路) ...

2020-04-06 18:18:06 235

原创 面试中常用的算法——递归、回溯

排序算法 冒泡排序/Bubble Sort 插入排序/Insertion Sort 归并排序/Merge Sort 快速排序/Quick Sort 拓扑排序/Topological Sort 递归和回溯/Recursion & Backtracking 递归的基本性质:函数调用本身 把大规模的问题不断地变小,再进行推导的过程 回溯:利用递归的性质 从问题的起始点出发,不断尝试 返回一步甚至...

2020-04-06 16:39:50 577

原创 高级数据结构

优秀的算法往往取决于你采用哪种数据结构。 常用的高级数据结构: 优先队列(Priority Queue) 图(Graph) 前缀树(Trie) 线段树(Segment Tree) 树状数组(Fenwick Tree/Binary Indexed Tree) 在分析问题的时候回归本质,很多题目都能迎刃而解了。 优先队列 与普通队列的区别: 保证每次取出的元素是队列中优先级最高的 优先级别可自定义 最...

2020-04-06 11:22:59 2938

原创 常用数据结构和技巧

常用的数据结构有: 数组、字符串/Array&String 链表/Linked-list 栈/Stack 队列/Queue 双端队列/Dequeue 树/Tree 数组、字符串 字符串中的字符无法修改。 数组的优点: 构建一个数组非常简单 能在O(1)的时间里根据数组的下标(index)查询某个元素 数组的缺点: 构建时必须分配一段连续的空间 查询某个元素是否存在时需要遍历整个数组,耗费O...

2020-04-06 09:30:35 213

原创 Python 矩形覆盖

可以用21的小巨星横着或竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? # -*-coding:utf-8 -*- class Solution: def rectCover(self,number): if number==0: return 0 if number==1: ...

2020-04-05 18:40:00 230

原创 Python 连续子数组的最大和

给一个数组,返回它的最大连续子序列的和。 例如{6,-3,-2,7,-15,1,2,2}连续子序列的和为8(从第0个开始,到第3个为止) # -*-coding:utf-8 -*- class Solution: def FindGreatestSumofSubArray(self, array): maxNum = None tmpNum = 0 ...

2020-04-05 18:11:14 441

原创 Python 序列化二叉树

实现两个函数,分别用来序列化和反序列化二叉树 #-*- coding:utf-8 -*- class TreeNode: def __init__(self,x): self.val = x self.left=None self.right =None class Solution: def Serialize(self,root...

2020-04-05 17:37:40 498

原创 Python 二叉搜索树的第k个节点

给定一棵二叉搜索树,请找出其中的第k小的节点。例如,(5,3,7,2,4,6,8)中,按节点数值大小排序第三小的节点值为4 #-*- coding:utf-8 -*- class TreeNode: def __init__(self,x): self.val = x self.left=None self.right =None clas...

2020-04-05 15:48:11 278

原创 Python 把二叉树打印成多行

从上到下按层打印二叉树,同一层节点从左至右输出。每一层输出一行。 class TreeNode: def __init__(self,x): self.val=x self.left=None self.right=None class Solution: def Print(self,pRoot): if pRoo...

2020-04-05 15:33:31 311

原创 Python 按之字形打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二行按照从右到左的顺序打印,第三行按照从左到右的顺序打印,其他行一次类推。 class TreeNode: def __init__(self,x): self.val = x self.left = None self.right = None class Soluti...

2020-04-05 15:22:12 488

原创 Python 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 #-*- coding:utf-8 -*- class TreeNode: def __init__(self,x): self.val=x self.left=None self.right=None class Solution: ...

2020-04-05 15:02:37 473 1

原创 Python 二叉树的下一个节点

给定一个二叉树和其中的一个节点,请找出中序遍历顺序的下一个节点并且返回。书中的节点不仅包含左右子节点,同时包含指向父节点的指针。 class TreeLinkNode: def __init__(self,x): self.val = x self.left = None self.right =None self.next ...

2020-04-05 14:46:01 339

原创 Python 数据流中的中位数

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数 # -*- coding:utf-8 -*- class Solution: def __init__(sel...

2020-04-04 23:06:26 555

原创 Python 最小的K个数

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4 最大堆的查找时间复杂度为O(logK) 替换的时间复杂度也为O(logK) 辅助数组的空间复杂度为O(K) 如果换 ...

2020-04-04 21:23:46 603

原创 Python 二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整书中节点指针的指向。 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def C...

2020-04-04 20:16:00 287

原创 Python 二叉树中和为某一值的路径

输入一颗二叉树的根节点和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。路径定义为从树的根节点开始往下已知到叶节点所经过的节点所形成的一条路径。在返回值的list中,数组长度大的数组靠前。 class TreeNode: def __init__(self, x): self.val = x self.left = None self...

2020-04-04 19:40:18 381

原创 Python 二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入饿数组的任意两个数字都互不相同。 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution...

2020-04-04 18:25:07 276

原创 Python 从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def PrintFromTopToBottom(self,root):...

2020-04-04 17:59:43 275

原创 Python 二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。 class TreeNode: def __init__(self, x): self.val = x self.next = None class Solution: def Mirror(self,root): if root == None: return...

2020-04-04 17:49:39 301

原创 Python 树的子结构

输入两颗二叉树A,B, 判断B是不是A的子结构。约定空树不是任何数的子结构 class Solution: def HasSubtree(self, pRoot1, pRoot2): if pRoot1 == None or pRoot2 == None: return False def hasEqual(pRoot1, pRoo...

2020-04-04 16:31:00 262

原创 Python 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 class TreeNode: def __init__(self, x): self.val = x self.nex...

2020-04-04 16:06:45 161

原创 Python 树的遍历递归和循环

class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None ###递归的形式 先序遍历 中序遍历 后序遍历 def preOrderRecursive(root): if root == Non...

2020-04-04 15:20:43 1074

原创 Python 数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请找出这两个只出现一次的数字。 # -*-coding:utf-8 -*- class Solution: def FindNumsAppearOnce(self, array): # 如果两个数相同,那么这两个数的异或操作就等于0 if len(array) < 2: ...

2020-04-04 04:54:13 1511

原创 Python 丑数

把只包含因子2,3和5的数称作丑数(Ugly Number)。 例如6,8都是丑数,但14不是,因为它包含质因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 方法一,运行速率慢,当N较大时尤为明显: # -*-coding:utf-8 -*- class Solution: def GetUglyNumber_Solution(self, index): ...

2020-04-04 04:20:55 853

原创 Python 数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 方法一 # -*- coding:utf-8 -*- #时间复杂度 O(n) #空间复杂度 O(n) class Solution: def MoreThanHalfNum_Sol...

2020-04-04 03:17:52 842

原创 Python 不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+,-,*,/四则运算符 # -*- coding:utf-8 -*- class Solution: def Add(self, num1, num2): xorNum = num1 ^ num2 andNum = num1 & num2 << 1 while andNu...

2020-04-04 02:54:17 541

原创 Python 二进制中1的个数

输入一个整数,输出该树二进制表示中1的个数。其中负数用补码表示。 补码:正数不变,负数是他的正数的反码+1 例如: -2的补码: 2的二进制为: 1000…00010 2的二进制的反码为: 1111…11101 2的二进制的反码+1为: 1111…11110 所以-2的补码就是: 1111…11110 # -*-coding:utf-8 -*- cla...

2020-04-04 02:07:42 523

原创 Python 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。 # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def FindKthToTail(self, head, k): fi...

2020-04-03 17:45:11 280

原创 Python 从尾到头打印链表

用Python实现链表的顺序打印: # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): self.val = x self.next = None def printChain(node): while node: print(node.val) ...

2020-04-03 17:21:16 360

原创 Python 冒泡排序

冒泡排序: def bubbleSort(array): for i in range(len(array)): for j in range(len(array) - i - 1): if array[j] > array[j + 1]: array[j], array[j + 1] = array[j + 1...

2020-04-03 15:56:56 137

原创 Python 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,是的所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 # -*-coding:utf-8 -*- # 时间复杂度为O(n) # 空间复杂度为O(n) class Solution: def reOrderArray(self, array): ret = []...

2020-04-03 15:54:36 1104

原创 Python 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 Note: 给出的所有元素都大于0,若数组大小为0,请返回0. 方法一: # -*- coding:utf-8 -*- # 复杂度 O(n) class Solution: def...

2020-04-03 14:41:20 471

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除