计算
bsbcarter
这个作者很懒,什么都没留下…
展开
-
LeetCode—Palindrome Number
受到上个题的启发,先把int reverse了 然后判断是否和原来的数字相等。 这样做的话average case时间复杂度高 看到了别人的解法是用两个指针,只要判断到一位不想等就返回,平均复杂度低一些,但是怎么用指针不好想。他实际上指针就是这一位的base 比如10,100,1000 然后用x分别除以左右两个对应的指针 再去余 实际上就是取了这个位置的数字。 我的代码 public cl原创 2015-02-26 11:45:49 · 258 阅读 · 0 评论 -
**LeetCode-Divide Two Integers
首先不看那些corner case的话 不管正负号 思想就是每次给除数乘以二 然后和被除数比较 找到最大的一个比被除数小的倍数 比如15/3 那最大的可以从15里面减去的就是12 是3的四倍 乘以二通过左移一位来实现 这样的话为了记录那个最大数字是除数的几倍 同时用一个1来同时左移记录 发现是四倍 然后就从被除数中减去这个最大倍数 然后一直循环到即使1倍也不能减去了 就累计出来了得数 但是原创 2015-11-02 01:11:46 · 201 阅读 · 0 评论 -
LeetCode-Sqrt(x)
用二分查找,或者牛顿迭代 二分的话记得head设置成1而不是0,记得判断要用mid> x/ mid 而不要用mid * mid>x 因为乘法可能overflow max int public class Solution { public int sqrt(int x) { if ( x <= 0) return 0; int h原创 2015-03-11 00:36:29 · 364 阅读 · 0 评论 -
LeetCode-Missing Number
这个题有很多方法 1.计算和 再每个减去 注意overflowpublic class Solution { public int missingNumber(int[] nums) { int n = nums.length; double sum = ( 1+n ) * n /2; for ( int i = 0; i < n; i ++原创 2015-09-18 05:54:23 · 272 阅读 · 0 评论 -
*LeetCode-Product of Array Except Self
思想就是两遍 第一遍把这个数左边的乘积乘好 第二遍从右边开始,把这个数右边的乘上来 public class Solution { public int[] productExceptSelf(int[] nums) { int [] res = new int [nums.length]; res [0] = 1; for ( i原创 2015-09-18 03:58:19 · 241 阅读 · 0 评论 -
LeetCode-Power of Two
和上一个题一样 更简单 public class Solution { public boolean isPowerOfTwo(int n) { if ( n == 0 ) return false; while ( n % 2 == 0 ){ n /= 2; } if ( n原创 2015-09-16 04:52:37 · 262 阅读 · 0 评论 -
LeetCode-Ugly Number
因为int最大是2的31次方 所以用这种循环除的方式不会太慢public class Solution { public boolean isUgly(int num) { if ( num == 0 ) return false; while ( num % 2 == 0 ){ num /= 2;原创 2015-09-16 04:46:16 · 245 阅读 · 0 评论 -
*LeetCode-Happy Number
题目中明确说了 假如不是一直在1循环也是一直循环 所以就用检查环的那个方法 一个快指针移动两步 一个慢指针移动一步 public class Solution { public boolean isHappy(int n) { int slow = n; int fast = n; do { slow = calc原创 2015-09-16 04:33:36 · 245 阅读 · 0 评论 -
LeetCode-Evaluate Reverse Polish Notation
因为是很标准的两个oprand 一个operator 所以很简单 但是注意string compare不能用==!!!要用equals 外加注意-和/的顺序 public class Solution { public int evalRPN(String[] tokens) { Stack stack = new Stack (); for (原创 2015-10-01 08:38:44 · 218 阅读 · 0 评论 -
*LeetCode-Add Digits
基本做法就是从最后一位累加,累加一次就把这个中间结果调用这个函数直至变成一位。 recursive public class Solution { public int addDigits(int num) { while ( num >= 10 ){ int sum = num % 10; sum = addDigits(原创 2015-09-14 22:56:46 · 244 阅读 · 0 评论 -
*LeetCode-Different Ways to Add Parentheses
不用考虑括号不括号的问题 想成了stack就错了 应该用分治递归 每次遇到一个运算符就把string两边分开分别递归计算 得到两个list 然后这两个list里面的结果根据这个符号排列组合计算 最后corner case是不存在括号 即list为空 直接把string add进去 public class Solution { public List diffWaysToComput原创 2015-10-02 08:37:53 · 245 阅读 · 0 评论 -
*LeetCode-Basic Calculator II
这个题也是每次遇到符号的话计算前一次符号的计算 因为符号意味着这个num结束 所以每次sign要存起来 存成char 下次判断用 但是这个题是要把每个数字push进去 假如是乘除 算了这次再push 然后最后累加起来 其中注意最后一个位的时候也要做一遍是sign的 push最后一个数字进去 public class Solution { public int calculate(St原创 2015-10-01 08:15:24 · 256 阅读 · 0 评论 -
**LeetCode-Basic Calculator
这个方法很巧妙 但是很容易出错 每次记录这次的符号或者数字 但是进行的运算是上一次的 并且很巧妙的是用sign来记录上一个是+ 还是- sign为 1 或者 -1 下次乘到结果上 然后就是注意数字可能不是个位的 要乘以十累加 还有最后一个数字不要忘了加上去 假如遇到( 就要将当前结果和sign push 同时要给res和sign reset )的时候要先进行括号里面的最后一次运算原创 2015-10-01 07:38:48 · 289 阅读 · 0 评论 -
*LeetCode-Multiply Strings
就像正常的乘法一样 存下来结果的每一位 存成一个int array 然后处理一下大于十的 累加到前一位 然后就concat成string 但是注意前面很多0 不能加 但是假如全是0 就要返回0 public class Solution { public String multiply(String num1, String num2) { int len1 = num原创 2015-10-01 09:42:17 · 228 阅读 · 0 评论 -
*LeetCode-Count Primes
用一个数字记录是否1-n被mark掉 从2开始 mark掉所有2的倍数 然后就找到下一个还没被mark掉的 从这个数字的平方开始mark 因为小于他平方的 已经被mark过了 然后停止条件是sqrt (n) !!!很重要! public class Solution { public int countPrimes(int n) { int [] mark = new原创 2015-09-27 23:15:35 · 299 阅读 · 0 评论 -
LeetCode-Pow(x, n)
Recursive: public class Solution { public double pow(double x, int n) { if ( n == 0 ) return 1; double half = pow ( x, n/2); double res = 1.0; if ( n %原创 2015-03-11 00:10:23 · 302 阅读 · 0 评论 -
*LeetCode-Power of Two
首先除法的要注意corner case 0,1之类的 然后就是另一个方法是数bit 1 的个数 2的power只能有一个1 public class Solution { public boolean isPowerOfTwo(int n) { return n>0 && Integer.bitCount(n) == 1; } }原创 2015-11-08 00:14:20 · 271 阅读 · 0 评论