leetcode
文章平均质量分 66
__William__
学生,BUPT
展开
-
python numpy 生成 总和为固定值指定个数的随机数
总和固定 随机数原创 2022-03-09 11:13:12 · 6777 阅读 · 0 评论 -
二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:由于二叉树的中序遍历具有可以实现递增的功能,同时二叉树的每一个节点都有两个指针,左指针和右指针,因此我们可以用这些特点将二叉树转换成一个双向链表,每次在递归遍历的时候设置一个pre,记录中序遍历时当前节点的前节点,然后将当前节点的左指针指向pre原创 2016-11-26 12:10:04 · 5305 阅读 · 0 评论 -
判断是否为二叉搜索树的后序遍历
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:二叉搜索树后序遍历的特点是数组的最后一个节点为根节点,左子树的节点都小于根节点,右子树的节点都大于根节点,那么每次取数组的最后一个元素,从数组中依次往后遍历,直到找到一个大于根节点的元素,那么它左边的一定是左子树的节点,右边的原创 2016-11-26 10:57:45 · 4017 阅读 · 0 评论 -
判断平衡二叉树
题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路:首先设置一个函数用来判断树的高度,有了这个函数,我们就可以用来判断二叉树某一个分支的高度。接下来需要了解的是平衡二叉树即对于任意一个节点来说,起左右子树的高度差的绝对值小于等于1,我们可以用上面的函数判断左右子树的高度,如果高度差大于1则返回false,否则递归地判断左右子树。代码:public原创 2016-11-26 09:48:01 · 4018 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路:从根节点为起始节点,每次递归的时候target每次先减去当前节点的指,之后判断是否为叶节点,如果是叶节点则判断target是否为零,为零则找到一条路径。否则没有找到,则继续递归。值得注意的是,递归函数每次自动返回到它的父原创 2016-11-26 09:17:36 · 3970 阅读 · 0 评论 -
蓄水池抽样
引言:众所周知,想要面试一个统计学家和软件工程师的合体——数据工程师——是件很难的事情。我在面试中常使用的方法是:提出即需要算法设计,又需要一些概率论知识的问题,来考察面试者的功底。下面就是在硅谷非常流行的例子:“给出一个数据流,这个数据流的长度很大或者未知。并且对该数据流中数据只能访问一次。请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等。”当面对这样一个问题的时候,转载 2016-11-25 09:36:51 · 4736 阅读 · 0 评论 -
Remove Duplicates from Sorted Array (II)
题目:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.解题思路:设置两个指针i和j,i记录去掉重复后的位置,j记录当前移动位置。时间复杂度O(n).代码:public int remov原创 2016-12-04 20:13:46 · 4945 阅读 · 0 评论 -
Find Minimum in Rotated Sorted Array (旋转数组最小值)
题目:Find Minimum in Rotated Sorted ArraySuppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You m原创 2016-12-04 14:25:45 · 5175 阅读 · 0 评论 -
复制复杂链表
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路:首先有三种解法:第一种就是中规中矩的解法,首先复制next指针的节点,之后再复制random指针的节点,这种解法的缺点是时间复杂度太高,O(n^2原创 2016-11-26 17:02:04 · 5606 阅读 · 1 评论 -
对称二叉树的判断
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解题思路:对称二叉树的特点是抽对称,因此可以设置一种遍历方式,从而对比两种遍历方式即可看出来,前序遍历为根、左、右,可以定义一种新的遍历方式,根、右、左,即对称前序遍历。代码://前序遍历和对称前序遍历对比来判断public boolean原创 2016-11-26 20:35:23 · 4419 阅读 · 0 评论 -
python dict字典 value 排名
经常使用到的一个方法是对字典类型的数据结构根据value来进行排名,注意是排名不是排序。所以记录一下,可以供后来者使用。x = {'a':2.1, 'b':2.1, 'c':5.2, 'd':6}r = {key: rank for rank, key in enumerate(sorted(x.values(),reverse=True), 1)}print(r)# {2.1: 4...原创 2018-08-06 11:04:46 · 1713 阅读 · 0 评论 -
( Leetcode 21 ) Merge Two Sorted Lists (高效解法)
题目:Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.解题思路:虽然这道题比较简单,首先人人都能原创 2016-05-13 20:23:18 · 6741 阅读 · 0 评论 -
Longest Increasing Subsequence
题目:给定一个没有排好序的数组,求一个其递增的子序列,返回长度。使用O(nlogn)的解法。解题思路:一般来说,要求使用O(nlogn)时间复杂度的,首先想到二分查找,设置一个非递减的数组。具体思路看下面的例子。代码: public int lengthOfLIS(int[] nums) { if (nums == null || num原创 2016-12-15 14:06:27 · 4720 阅读 · 0 评论 -
Verify Preorder Serialization of a Binary Tree
题目:给定一棵二叉树的前序遍历序列,如 "9,3,4,#,#,1,#,#,2,#,6,#,#" ,# 代表空节点,判断是否是一个正确的二叉树前序遍历序列提供两种解题思路,出度&入度, 栈1. 出度& 入度/* 这道题使用出度和入度来解决,对于以下节点来说: 非空节点: 出度 2, 入度 1 空节点: 出度 0, 入度 1 那么当原创 2016-12-15 10:09:17 · 4626 阅读 · 0 评论 -
Rotated Sorted Array(旋转数组总结)
首先什么叫旋转数组,把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转。对于这样的数组,我们可以画一下的一个图来表示。对于 Rotated Sorted Array 来说,主要有两类问题:寻找Rotated Sorted Array的最小值。在Rotated Sorted Array里面查找给定原创 2016-12-17 09:50:39 · 5751 阅读 · 0 评论 -
跳台阶 && 变态跳台阶
题目1:跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:对于本题,前提只有 一次 1阶或者2阶的跳法。a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)c.由a\b假设可以得出总跳法原创 2016-12-01 20:27:49 · 4338 阅读 · 0 评论 -
滑动窗口的最大值
题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5原创 2016-11-30 11:04:27 · 4777 阅读 · 0 评论 -
( Leetcode 92 ) Reverse Linked List II
题目:Reverse Linked List IIReverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.原创 2016-03-25 21:03:48 · 6619 阅读 · 0 评论 -
快速判断素数,六素数法
最近翻百科的时候突然看到一个很不错素数筛选方法,叫六素数法,于是写了一下代码记录了下来。这是一种快速的判断一个数为素数的方法。首先解释一下什么叫六素数。六素数的英文为 “sexy prime” ,是相差为6的素数偶( p , p + 6 ),500之下的六素数 有: (5,11), (7,13), (11,17), (13,19), (17,23), (23,29), (31,37), (37,4原创 2016-03-25 19:51:26 · 10398 阅读 · 0 评论 -
( Leetcode 24) Swap Nodes in Pairs
题目:Swap Nodes in PairsGiven a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm shoul原创 2016-04-05 21:10:11 · 6525 阅读 · 0 评论 -
(Leetcode 143 )Reorder List
题目:Reorder ListGiven a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2原创 2016-04-04 16:13:43 · 6718 阅读 · 0 评论 -
(Leetcode 82) Remove Duplicates from Sorted List II (Java)
题目:Remove Duplicates from Sorted List IIGiven a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.For example,Given 1->2-原创 2016-03-21 20:21:35 · 6785 阅读 · 0 评论 -
(LeetCode 234)Palindrome Linked List
Leetcode第234题目是Palindrome Linked List。题目的描述如下:Given a singly linked list, determine if it is a palindrome.Follow up:Could you do it in O(n) time and O(1) space?解法思想:首先题目是说给定一个单链表,判断是原创 2016-03-06 19:33:00 · 6540 阅读 · 0 评论 -
( Leetcode 61 ) Rotate List
题目:Rotate ListGiven a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.解题思路:1. 首先求的原创 2016-05-03 20:07:49 · 6517 阅读 · 0 评论 -
( Leetcode 104 ) Maximum Depth of Binary Tree
题目:Maximum Depth of Binary TreeGiven a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.原创 2016-05-28 16:15:42 · 5720 阅读 · 0 评论 -
( Leetcode 107 ) Binary Tree Level Order Traversal II
题目: Binary Tree Level Order Traversal IIGiven a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For e原创 2016-05-28 16:44:01 · 5793 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:在二叉树的前序遍历中,第一个的值即二叉树的根节点,由此可以在中序遍历序列中找到根节点,根节点左边的是二叉树的左子树,右边的是原创 2016-11-29 16:56:33 · 3770 阅读 · 0 评论 -
数据流中的中位数
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解题思路:有以下几种解题思路:数组插入进去然后再排序,这种情况插入时间效率是O(n),找中位数时间效率是O(1)。排序的链表,两种时间复杂度和上面是一样的。二叉搜索树,首先原创 2016-11-29 15:15:15 · 5759 阅读 · 0 评论 -
(Leetcode 142)Linked List Cycle (II) (快慢指针详解)
Leetcode141题和142题很相似,都涉及到了快慢指针的算法。快慢指针就是设置两个指针,一个快指针,一个慢指针来达到解题的目的。下面分为以下几个模块来讲解:解第141题解第142题为什么快指针一定要设置为慢指针的2倍快慢指针的拓展应用一、Leetcode 141题题目为:Linked List CycleGiven a linked list, determi原创 2016-03-20 21:05:38 · 19158 阅读 · 1 评论 -
最大子串和问题(Maximum Subarray)
本文转载自:http://blog.csdn.net/joylnwang/article/details/6859677刚刚求连续子数组的最大和一个在O(n)时间内可以完成的Kadane算法,对原理很感兴趣,所以就搜到了这篇讲的很详细的文章,记录下来方便自己以后查阅。以下是原文。又一个经典问题,对于一个包含负值的数字串array[1...n],要找到他的一个子串array[转载 2016-11-10 20:41:33 · 4019 阅读 · 0 评论 -
( Leetcode 95 ) Unique Binary Search Trees II
题目:Unique Binary Search Trees IIGiven an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program should return原创 2016-06-08 21:32:13 · 6273 阅读 · 0 评论 -
( Leetcode 110 ) Balanced Binary Tree
题目:Balanced Binary TreeGiven a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees原创 2016-06-07 20:06:34 · 5476 阅读 · 0 评论 -
( Leetcode 25 ) Reverse Nodes in k-Group
题目:Reverse Nodes in k-GroupGiven a linked list, reverse the nodes of a linked list k at a time and return its modified list.If the number of nodes is not a multiple of k then left-out nodes in the原创 2016-05-08 21:40:35 · 6704 阅读 · 0 评论 -
( Leetcode 23 ) Merge k Sorted Lists
题目:Merge k Sorted ListsMerge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.解题思路:这道题的主要解题思路类似于归并排序,分和拆,同样这道题也分为两大部分,第一大部分主要解决拆分链表的问题,将链表按照两两为一对原创 2016-05-15 21:13:23 · 6854 阅读 · 0 评论 -
(Leetcode 147)Insertion Sort List
题目的原文是这样的:Sort a linked list using insertion sort.Subscribe to see which companies asked this question解题思路:1. 首先有一种最通俗一下就想到的解法,即是新建一个dummy头结点,然后每次将原head的结点取出来一个,再在dummy链表寻找合适的位置插入。这样解法原创 2016-03-17 21:26:14 · 6607 阅读 · 0 评论