
Math
iteye_17352
这个作者很懒,什么都没留下…
展开
-
Leetcode - Rectangle Area
Find the total area covered by two rectilinear rectangles in a 2D plane.Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.Assume that the total ...原创 2015-06-08 10:24:37 · 90 阅读 · 0 评论 -
Leetcode - Strobogrammatic Number
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).Write a function to determine if a number is strobogrammatic. The number is represented as...原创 2015-08-22 10:48:09 · 126 阅读 · 0 评论 -
Leetcode - Count Primes
[ref][url]https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes[/url][url]https://leetcode.com/discuss/34622/my-c-solutions-in-44ms-time-nearly-o-n-and-space-nearly-o-n[/url][code="java"]publi...原创 2015-08-22 13:42:34 · 117 阅读 · 0 评论 -
Leetcode - Fraction to Recurring Decimal
[分析][color=blue]处理int型整数运算时,为避免溢出,省事的做法就是内部转为long类型处理[/color],不然极可能在极值case上栽跟头,比如int a = Integer.MIN_VALUE, int b = -1 和 long a = Integer.MIN_VALUE, long b = -1, 两者a / b的结果是不一样的,前者会发生溢出,在比如Math.ab...原创 2015-08-23 10:05:03 · 106 阅读 · 0 评论 -
Leetcode - Max Points on a Line
[分析]两条直线若包含一个公共点且斜率相同,则为同一条直线。因此依次将数组中各点设为公共点,并计算所有未当过公共点的其他点同当当前公共点形成直线的斜率,使用哈希表保存各斜率直线上的点数,遍历过程中同时更新维护一条直线上包含的最多点数。实现1中key直接就是double类型的斜率,实现时有几个注意点:1)斜率为0时要单独判断并显式赋值为0,double类型0 和 -0是不等的2)需要...原创 2015-08-23 15:30:26 · 140 阅读 · 0 评论 -
Leetcode - Excel Sheet Column Title
[分析]十进制转26进制,需要注意的是26进制是以1为最小数的。思路1写了好久,放在这儿用于警示自己还需要更多练习。[code="java"]public class Solution { // Method 2 // https://leetcode.com/discuss/19047/my-1-lines-code-in-java-c-and-pytho...原创 2015-08-24 10:24:55 · 91 阅读 · 0 评论 -
Leetcode - Ugly Number II
[分析]暴力的办法就是从1开始检查每个数是否是丑数,发现丑数计数器加1直到找到第n个丑数。这种方法效率低,因为它不管是不是丑数都进行了计算,所以优化方向是仅计算丑数而不在非丑数上耗费时间。易知后面的丑数一定是前面的丑数乘以2或者3或者5得到的,假设现在已经计算出第k个丑数U(k),那么下一个丑数是前面丑数中乘以2、3、5中第一个大于U(k)的数。怎么找呢?我们需要保留已计算的所有丑数,将已知丑...原创 2015-08-24 22:54:57 · 93 阅读 · 0 评论 -
Leetcode - Factorial Trailing Zeroes
[思路]数乘积结果的后缀0,其实就是数结果中有多少个因子10,10=2*5,易知因子2是充裕的,因此只要数因子5的个数,暴力的方法是统计并加和1到n每个数含有因子5的个数,会超时。能贡献因子5的数是5,10,15,20,25,30……,其中所有5的倍数会至少贡献1个因子5,所有25的倍数会至少贡献两个因子5,所有5*5*5=125的倍数会至少贡献三个因子5,依次类推,因此n中5的因子个数=...原创 2015-08-25 09:00:01 · 90 阅读 · 0 评论 -
Leetcode - Basic Calculator II
mplement a basic calculator to evaluate a simple expression string.The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should tr...原创 2015-08-27 09:16:27 · 115 阅读 · 0 评论 -
Leetcode - Strobogrammatic Number III
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).Write a function to count the total strobogrammatic numbers that exist in the range of low...原创 2015-09-03 16:45:30 · 417 阅读 · 0 评论 -
Leetcode - Add Binary
[分析]从低位往高位逐位相加,就是这么一个简单的题却花了我一个多小时,无力骂自己了……一开始想到用StringBuilder保存结果,但为了得到结果我需要每次将新算的一位insert到最前面,这样效率比较低,于是转而使用数组保存结果,数组预先开成两个字符串最大长度加1,这种coding起来其实很麻烦,要维护三个下标,很容易出错。其实是对StringBuilder接口不熟,没有意识到它有...原创 2015-08-21 09:28:11 · 93 阅读 · 0 评论 -
Leetcode - Rotate Image
[分析]自己的思路:从外到内一圈圈顺时针旋转90度,坐标映射问题。Leetcode讨论区有很多有趣巧妙的思路,列举两个点赞率较高思路:1)上下颠倒,然后转置/* * clockwise rotate * first reverse up to down, then swap the symmetry * 1 2 3 7 8 9 7 4 1 * 4 ...原创 2015-08-19 19:51:23 · 138 阅读 · 0 评论 -
Leetcode - Calculator
[分析]思路1:逆序遍历字符串,数字和右括号保存在一个堆栈stack1中,运算符保存在另一个堆栈stack2中,跳过空格,遇到左括号时计算stack1中首个右括号之上的所有数据,也即当前括号对中的内容。 在Accept之前有两个出错点:1)采用顺序遍历。出错case:2-1+1,因为加减的运算顺序是从左至右;2)逆序遍历时拼接完一个位数大于1的完整int 后要逆序已得到实际数值。出错case:...原创 2015-06-10 09:31:43 · 129 阅读 · 0 评论 -
Leetcode - Multiply String
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.[分析] Naive的做法是模拟笔算乘法操作,从高位到低位的顺序将num2...原创 2015-06-15 09:39:35 · 95 阅读 · 0 评论 -
Leetcode - Next Permutation
原题链接:[url]https://leetcode.com/problems/next-permutation/[/url][分析] 参考Code Ganker的思路:1)从低位往高位扫描数组,找到第一个小于其右边数字的位置 p;2)对p分两种情况讨论:a) 若 p >= 0, 即当前数组表示的数并非这个数组能表示的最大数,从p 右边下一个数开始往低位(向右)扫描数组,找到第一个不比p大的下...原创 2015-08-01 16:38:43 · 111 阅读 · 0 评论 -
Leetcode - Permutation Sequence
原题链接:[url]https://leetcode.com/problems/permutation-sequence/[/url][分析] 思路1:调用 k 次NextPermutation.思路2:数学解法,在n!排列中,每个第一位元素带领 (n-1)! 个排列数,假设 p = k / (n-1)!,则num[p]就是第一位上的数字,注意 k 要从0开始计数,因此进主循环前k--...原创 2015-08-01 17:19:47 · 113 阅读 · 0 评论 -
Leetcode - sqrt(x)
[分析]这是一道数值计算的题目,Code Ganker中指出数值计算类型题目通常就是二分法或者以2为基进行位处理。此题使用二分法,实现套路就是最经典的二分算法。数值计算题需要特别注意的就是数值越界处理。此题一开始没写对就是处理大数据时溢出,Method 1就是溢出版本,mid 为 int 类型,如果没有强转类型,则 mid * mid的结果仍然是int类型,赋给long类型的midSquare...原创 2015-08-10 21:40:08 · 101 阅读 · 0 评论 -
Leetcode - Divide Two Integers
[分析] 不能使用乘、除、取模运算,直接的思路当然是一次减一个除数,当然面试是没必要考这个的。如何提高效率呢?那就是要尽可能减少运算次数,能不能一次减去除数的若干倍呢?在pow(x,n)和sqrt(x)已指出数值计算题目通常两个思路,二分法和以2为基的位运算。左移一位相当于乘2,于是我们可以尝试每次减去除数的2^k倍,如何确定k取值?只要它满足:divs * 2^k > 31) == 1 ? ...原创 2015-08-11 09:00:31 · 88 阅读 · 0 评论 -
Leetcode - Pow(x, n)
[分析] 数值计算类型题目,二分法或者借助位运算,本题两种方法都可解。实现1是二分法思路,缺点是递归可能导致栈溢出。实现2是借助位运算,并进行了各种溢出检查和处理。实现3同样是位运算法,除了计算过程使用long类型的n外没有进行其他溢出保护,代码非常简洁,利于理解题目本身思路,实际应用中需要像实现2那样做溢出检查以保证程序的健壮性。[ref][url]http://www.cnblog...原创 2015-08-11 09:45:53 · 92 阅读 · 0 评论 -
Leetcode - Bitwise AND of Number Range
Given a range [m, n] where 0原创 2015-08-17 09:41:10 · 95 阅读 · 0 评论 -
Missing Ranges
[分析]此题若不考虑极大值极小值相关的corner case是简单的,如base version,当前leetcode的test case没有包含这些边缘case,因此是可以通过的。下面给出两种实现,base version和做了防溢出处理的robust version,并提供了相应的test case。[color=blue]遇到整数数组问题,需要特别留意溢出问题[/color],面试时...原创 2015-08-19 09:48:38 · 94 阅读 · 0 评论 -
Leetcode - Integer to English Words
[分析]这题通过率之所以非常低是因为有很多corner case,代码写得不好时就很容易在各种corner case上刷跟头,第二十遍才被Accept,自己还真是有耐心。然后看到讨论区中的解答,一对比,差距啊,努力努力再努力!注意:不需要添加“and”大神漂亮的作品:[url]https://leetcode.com/discuss/55462/my-clean-java-solu...原创 2015-09-04 20:53:16 · 105 阅读 · 0 评论