刷题
mym_74
这个作者很懒,什么都没留下…
展开
-
1. 两数之和
1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] cla...原创 2019-12-01 11:27:55 · 154 阅读 · 0 评论 -
二叉树的前中后序遍历-非递归
144. 二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeN...原创 2019-12-01 11:26:55 · 150 阅读 · 0 评论 -
基于快排的TOP K 问题
类似于快速排序,首先选择一个划分元,如果这个划分元的序号index刚好等于k,那么这个划分元以及左边的数,刚好组成了top-k small data;如果index>k, 那top-k small data在index的左边,那么就继续递归从index-1和数中选取top-k.如果index < k,那么说明还要从index的右边,选取top-(k-index) small data....原创 2019-11-20 17:39:41 · 312 阅读 · 0 评论 -
判断是不是二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: fa...原创 2019-11-20 17:38:05 · 256 阅读 · 0 评论 -
判断是不是平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] ...原创 2019-11-20 17:36:29 · 99 阅读 · 0 评论 -
二叉树的Z字型打印
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] 跟层序遍历一样,加一个判断 //关键步...原创 2019-11-20 17:33:18 · 616 阅读 · 0 评论 -
二叉树的高度 leetcode 104
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeN...原创 2019-11-20 17:22:11 · 165 阅读 · 0 评论 -
175.组合两个表-leetcode
175. 组合两个表 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------...原创 2019-11-07 09:31:08 · 165 阅读 · 0 评论 -
110.平衡二叉树-leetcode
110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,n...原创 2019-11-07 09:29:52 · 117 阅读 · 0 评论 -
104二叉树的高度-leetcode
104.二叉树树的高度 104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 使用递归 /** * Definit...原创 2019-11-07 09:29:21 · 171 阅读 · 0 评论 -
102.二叉树的层序遍历 leetcode
102.二叉树的层序遍历 102. 二叉树的层次遍历 给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回层序遍历结果 [ [3], [9,20], [15,7] ] 思路: 利用队列来完成, 如果根节点为非空, 根节点入队, 一直遍历当前层次的节点 class Solution{ publ...原创 2019-11-06 14:28:40 · 180 阅读 · 0 评论 -
leetcode- 二叉树的前中后序遍历
144.二叉树的前序遍历 144. 二叉树的前序遍历 给定一个二叉树,返回它的前序遍历 示例 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; *...原创 2019-11-05 21:36:00 · 89 阅读 · 0 评论 -
树,二叉树,前中后序遍历-java
树示意图 树的常用术语(结合示意图理解): 结点 : 结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。 根结点 :没有父节点的结点称为根节点 父结点 : :若一个结点含有子结点,则这个结点称为其子结点的父结点; 子结点 : 叶子结点 :没有子结点的结点 结点 的权(节点值) 结点的度: 一个结点含有的子结点的个数称为该结点的度 路径(从root节点找到该结点 的路线) 层 : 根结点...原创 2019-11-02 20:51:45 · 329 阅读 · 0 评论 -
堆排序-java
堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 堆是具有以下性质的完全二叉树: 大顶堆: 每个结点的值都大于或等于其左右孩子结点的值,注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。 小顶堆: 每个结点的值都小于或等于其左右孩子结点的值 大顶堆举例说明 堆排序基本思想 将待...原创 2019-11-02 18:19:28 · 96 阅读 · 0 评论 -
归并排序-java
归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。1 从图上就能很明确的看出归并算法的原理, 这种结构也很像一颗完全二叉树 package sortalgor...原创 2019-10-29 22:05:57 · 79 阅读 · 0 评论 -
选择排序-java
选择排序 import java.util.Arrays; public class SelectSort { public static void main(String[] args) { int[] arr = new int[] {3,4,5,7,1,2,0,3,6,8}; selectSort(arr); System.out.println(Arrays.toStr...原创 2019-10-29 22:04:48 · 104 阅读 · 0 评论 -
希尔排序-java
希尔排序 简单的说,希尔排序就是将数组按照步长d来划分为k组,对每组内的数字进行一次插入排序,排完序列之后,再将d/2 package SortAlgorithm; /** * @author: xingt mym_74@163.com * @date: 2019/10/22, 15:11 * @version: 1.0 */ import java.util.Arrays; publ...原创 2019-10-29 22:04:18 · 169 阅读 · 0 评论 -
快速排序-java
快速排序 快速排序: 快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 视频链接 /* 基本思想: 通过一趟排序把要数据分隔成独立的2部分,其中一部分的所有数据比另一部分的所有...原创 2019-10-29 22:03:45 · 107 阅读 · 0 评论 -
插入排序-java
java /** * 插入排序 * 直接插入排序: * 基本思想: * 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 * 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 * 也是排好顺序的。如此反复循环,直到全部排好顺序。 * * 直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。 * 内层循环为待比较数值确定其...原创 2019-10-29 22:03:15 · 70 阅读 · 0 评论 -
用2个栈实现队列
用2个栈实现队列 nowcoder cyc笔记 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路 in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先...原创 2019-10-29 21:53:56 · 90 阅读 · 0 评论 -
从尾到头打印链表
从尾到头打印链表 nowcoder 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 使用递归 要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表 2->3(3,2),最后再打印第一个节点 1。而链表 2->3 可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调用自己,这就是递归函数。 /** * p...原创 2019-10-29 21:53:17 · 82 阅读 · 0 评论 -
斐波那契数列求第n项
斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 public class Solution { public int Fibonacci(int n) { int a = 0; int b = 1; int c = 0; if(n...原创 2019-10-29 21:52:07 · 315 阅读 · 0 评论 -
替换空格
nowcode 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 nowcode 参考 package 剑指offer; /** * @author: xingt mym_74@163.com * @date: 2019/10/27, 13:58 * @versio...原创 2019-10-29 21:50:28 · 85 阅读 · 0 评论 -
二维数组中的查找
二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 nowcoder package 剑指offer; /** * @author: xingt mym_74@163.com * @date: 2019/10/27, 11...原创 2019-10-29 21:47:40 · 85 阅读 · 0 评论