
数据结构
be_gin_ner
这个作者很懒,什么都没留下…
展开
-
删除排序链表中的重复元素II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。 示例1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例2: 输入: 1->1->1->2->3 输出: 2->3 /** * Definition for singly-li...原创 2019-04-04 23:02:10 · 120 阅读 · 0 评论 -
根据中序遍历和后序遍历序列构造二叉树
思路:从后往前遍历后序数组,找到根节点,然后,构建右子树,最后构建左子树 class Solution { class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } private in...原创 2019-08-03 19:54:31 · 863 阅读 · 0 评论 -
常见排序之堆排序
堆排序 堆排序(Heapsort)指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆。 小根堆 大根堆 ...原创 2019-07-26 22:56:25 · 214 阅读 · 0 评论 -
二叉树的非递归遍历(前序,中序,后序,层序)
废话不多说,直接上代码。有问题欢迎提出 前序遍历非递归 void binaryTreePrevOrderNonR(TreeNode root){ if(root == null ){ return ; } Stack<TreeNode> stack = new Stack<>(); ...原创 2019-07-30 17:06:14 · 168 阅读 · 0 评论 -
两数相加(给出两个 非空 的链表用来表示两个非负的整数)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8...原创 2019-04-03 19:38:06 · 2723 阅读 · 2 评论 -
环形链表(给定一个链表,判断链表中是否有环。)
给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例2: 输入:head = [1,2], pos =...原创 2019-04-02 20:54:41 · 513 阅读 · 0 评论 -
环形链表II
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node inde...原创 2019-04-07 22:53:10 · 126 阅读 · 0 评论 -
合并两个有序链表(将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 /** * Definition for singly-linked list. * public class ListNode { * ...原创 2019-04-01 20:44:02 · 528 阅读 · 0 评论 -
相交链表
编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注...原创 2019-04-05 22:35:29 · 103 阅读 · 0 评论 -
从百万数据中找到第K大的数并且时间复杂度为O(N)
假设数组为array,求第K大的元素。 注意:因为快排排序后,数组是由小到大的,所以第K大的元素为倒数第十个即 array[array.length-K+1]; 所以我们要令k =array.length-K+1 思路:利用快排的分治思想,先对数组进行一趟快排,将数组分为三个区,(0,par),(par),(par+1,array.length-1)。判断k与par的大小,如果par +1&...原创 2019-08-06 18:24:38 · 1416 阅读 · 0 评论