算法
文章平均质量分 70
cuicui_ruirui
这个作者很懒,什么都没留下…
展开
-
leetcode 二叉树
一、重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字思路:第一次:前序遍历中的第一个节点为根节点,需要在中序遍历中找到与根节点值相同的节点所在的索引。每次找都遍历一次中序遍历效率低。考虑将中序遍历存在字典中,将中序遍历中的值当做键,索引当做值。因此在执行递归之前先遍历中序遍历并存在字典中后续:在递归函数中主要做三件事:1找到当前根节点在中序遍历中的索引 2建立根节点 3建立左右节点的递归,左子...原创 2021-07-27 10:07:34 · 353 阅读 · 0 评论 -
leetcode 双指针
一、翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。1、无空格字符构成一个单词。2、输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。3、如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。思路:使用双指针1、先将字符串首尾多余的空格去掉,使用strip函数2、对于条件3,不管翻转前单词之间有原创 2021-07-06 22:53:55 · 427 阅读 · 0 评论 -
leetcode 栈堆
一、用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )用python实现堆栈和队列的方法及代码python中用列表来表示栈和队列,并且他们添加元素都是使用方法list.append,删除元素是用list.pop。因此,使用两个栈实现队列主要是实现队列的删除方法,将栈A出栈放入栈B,相当于将栈A元素倒序,之后再输.原创 2021-07-03 14:46:17 · 351 阅读 · 0 评论 -
leetcode 数组和矩阵
一、数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。方法一、哈希表(set)以第一个数字为例,要看第一个数字是否重复,需要查看所有的数字才能知道,遇到这种情况,首先想到哈希表(牵一发动全身的情况使用哈希)遍历数组,如果数字在set中,返回该数字,如果不在,则将数字添加到set中shiclass Solution(object):原创 2021-06-29 17:21:51 · 306 阅读 · 0 评论 -
leetcode 链表
class Solution(object): def getIntersectionNode(self, headA, headB): """ :type head1, head1: ListNode :rtype: ListNode """ #思路:双指针 #原理:链表a+链表b未相交的长度=链表b+链表a未相交的长度,所以如果有相交的起始点,那么一定是两个指针首次相交的点 l1,l.原创 2021-06-22 11:47:39 · 299 阅读 · 0 评论