11
2020
03

剑指offer题目训练5:重建二叉树

输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。注意:二叉树中每个节点的值都互不相同;输入的前序遍历和中序遍历一定合法;样例给定: 前序遍历是:[3, 9, 20, 15, 7] 中序遍历是:[9, 3, 15, 20, 7] 返回:[3, 9, 20, null, null, 15, 7, null, null,&nb
10
2020
03

快速排序

今天来复习下几个常用的排序方式,首先想到的就是快速排序,思路用的是分治思想。选取一个标准值,利用两个指针i,j分别只想最左边,最右边,i从左边找到1个比这个标准值大的数,j从右边找到1个比这个值小的数,两者交换,直到i>j就找到了这个标准值的位置。/* 快速排序,分治思想 给定的N个数从小到达进行排序 3 2 4 5 1 思路:选定第一个元素作为轴,i从左往右找比他大的一个数a[i],j从后往前找比他小的数a[j] 两者交换,知道i>
10
2020
03

剑指offer题目训练4:从尾到头打印链表

输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。返回的结果用数组存储。样例输入:[2, 3, 5] 返回:[5, 3, 2]思路,本题思路比较多,如果要使用vector或者stack的话比较方便,这里奉上雪大的vector简单用法,主要用了vector.rbegin vector.rend 指针顺序是从尾到头输出的./**  * Definition for singly-linke
09
2020
03

剑指offer题目训练3:二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。样例输入数组: [   [1,2,8,9],   [2,4,9,12],   [4,7,10,13],   [6,8,11,15] ] 如果输入查找数值为7,则返回true, 如果输入查找数值为5,则返回false。思路,乍一
09
2020
03

剑指offer题目训练2:找出数组中重复的数字,不允许修改数组

给定一个长度为 n+1n+1 的数组nums,数组中所有的数均在 1∼n1∼n 的范围内,其中 n≥1n≥1。请找出数组中任意一个重复的数,但不能修改输入的数组。样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。思考题:如果只能使用 O(1)O(1) 
09
2020
03

剑指offer题目训练1:找出数组中重复的数字

给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。注意:如果某些数字不在 0∼n−10∼n−1 的范围内,或数组中不包含重复数字,则返回 -1;样例给定 nums = [2, 3, 5, 4, 3,&n
27
2019
08

leecode 136 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4题解:此题需要用的位运算来解决,异或运算的几个性质:交换律:a ^ b ^ c <=> a ^ c ^ b 任何数于0异或