leetCode做题笔记二(4, 8)

  1. LeetCode8, 手写atoi,一大堆判断。。。最好记录408ms,约为5%。

经验4:如何经济的判断溢出

  经验5:让不合法的输入第一时间return0;

  经验6:对于javascript里那一堆isxxx的函数,对应在Java的Character类下

2. LeetCode4 求两个升序数组的中位数

网上大部分解法都是错误的,和我犯了一样的错误。三个小时啊啊啊啊啊白费了

经验7:求平均数应该除以2.0

错误算法:

分别求出序列A 和B 的中位数,设为a 和b,求序列A 和B 的中位数过程

1)若a=b,则a 或b 即为所求中位数,算法结束。

2)若a<b,则舍弃序列A 中较小的一半,同时舍弃序列B 中较大的一半,要求舍弃的长度相等;

3)若a>b,则舍弃序列A 中较大的一半,同时舍弃序列B 中较小的一半,要求舍弃的长度相等;

在保留的两个升序序列中,重复过程1)、2)、3),直到两个序列中只含一个元素时为止,较小者即为所求的中位数。

原因:应该在任何一个数列剩两个元素的时候就停止程序,因为有可能中位数恰好就是这两个元素的平均数,不能舍去。但这时要分析的情况太多,不优。

正确算法

这个算法的主要思想就在于找到一个数,这个数前面有(n+m)/2个数,不断递归求解即可

时间: 2024-11-05 22:45:23

leetCode做题笔记二(4, 8)的相关文章

leetCode做题笔记二(26, 20,9)

LeetCode26:给定一个有序序列,求不同的元素个数并且返回不同序列,要求原地返回,O(1)空间(26, easy) 15分钟,第一次就AC了略开心,最好记录406ms貌似是前1%!虽然这个时间不靠谱 没啥可优化的了,感觉几乎没有废代码 经验?:真的会有公司考这么简单? 括号匹配.(20, easy) 最好记录430ms,前10%.稍微用了点小聪明,不过不好(使用异常做判断) 经验8:使用Stack比使用数组效率高很多,对这个题而言 经验?:真的会有公司考这么简单? 判断一个数是不是回文数,

LeetCode做题笔记之四

这次一口气放9道题~ LeetCode 23题,Hard! 归并K个有序链表.使用堆来做,一开始把K个链表的第一个元素放进数组,然后建堆.之后取出第一个元素(如果这个元素是nil元素,直接退出)放进归并后的链表,再从这个元素所在的链表取第一个元素放到原来元素的位子上,然后重新维护堆性质.如果那个链表已经没有元素,那就插入一个nil元素. 趁机用了用泛型方法,真好使!哨兵nil也不错,感谢算法导论! public class WrappedListNode {     public int val

【leetcode刷题笔记】Max Points on a Line

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 题解: 思路比较简单,每条直线都可以表示为y=kx+b,所以对于任意三点,如果它们共线,那么它们中任意两点的斜率都相等. 所以就遍历points数组,对其中的每一个元素计算它和位于它后面的数组元素的斜率并保存在一个hashmap中. 这个hashmap的键就是两点构成直线的斜率,值就是和当前元素po

【leetcode刷题笔记】Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For example,Given n = 3, You should return the following matrix: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 题解:以前做过的Spiral Matrix是给一个矩阵螺旋式的输出,这道题是给一个n,螺旋式的

【leetcode刷题笔记】Multiply Strings

Given two numbers represented as strings, return multiplication of the numbers as a string. Note: The numbers can be arbitrarily large and are non-negative. 题解:就是让实现一个大整数乘法. 假设两个数num1和num2的长度分别是len1和len2,那么最后得到的答案,在最高位有进位的时候,就是len1+len2位,否则是len1+len2

【leetcode刷题笔记】Sudoku Solver

Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by the character '.'. You may assume that there will be only one unique solution. A sudoku puzzle... ...and its solution numbers marked in red. 题解:递归.在每个空位

【leetcode刷题笔记】Maximal Rectangle

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area. 题解,很巧妙的一道题,对于一个0-1矩阵,它的每一行及以上都可以看作一个直方图(如下图所示),利用Largest Rectangle in Histogram的方法,可以在O(n)的时间搜索出这一行及以上的直方图中面积最大的矩形,对矩阵的每一行依次做这个操作,就可

【leetcode刷题笔记】Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3]. The largest

【leetcode刷题笔记】Recover Binary Search Tree

Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note:A solution using O(n) space is pretty straight forward. Could you devise a constant space solution? 题解:需要找到二叉搜索树中乱序的两个节点,并把它们交换回来