`
文章列表
[分析] 暴力的办法就是从1开始检查每个数是否是丑数,发现丑数计数器加1直到找到第n个丑数。这种方法效率低,因为它不管是不是丑数都进行了计算,所以优化方向是仅计算丑数而不在非丑数上耗费时间。易知后面的丑数一定是前面的丑数乘以2或者3或者5得到的,假设现在已经计算出第k个丑数U(k),那么下一个丑数是前面丑数中乘以2、3、5中第一个大于U(k)的数。怎么找呢?我们需要保留已计算的所有丑数,将已知丑数逐个乘2并同U(k)比较,第一个大于U(k)的数记为next2, 同样的方式计算出next3, next5, 下一个丑数就是next2, next3, next5三者间的最小值。每次必须从第一个丑数开始 ...
[分析] 十进制转26进制,需要注意的是26进制是以1为最小数的。 思路1写了好久,放在这儿用于警示自己还需要更多练习。 public class Solution { // Method 2 // https://leetcode.com/discuss/19047/my-1-lines-code-in-java-c-and-python // https://leetcode.com/discuss/34526/share-my-java-solusion // Using the mod operator gives numbers in ra ...
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. [分析] 思路1复杂度是O(nlogn),实现过程中发现自己二指针法一开始是写错的,错误的结果是二分后左边会比右边多两个元素,在Reorder List中这种写法之所以也能被Accept完全是凑巧,因为多两个不影响结果~ 思路2:参考https://leetcode.com/discuss/23676/share-my-o-1-space-and-o-n-time-java-c ...
[分析] 使用递归会Memory Limit Exceed,迭代方式参考 https://leetcode.com/discuss/17483/share-my-java-solution-with-comments-in-line 解析见代码注释 Reverse Linked List, Reverse Linked List II 可使用此题的解题技巧,可联系着体会,而Reorder List中包含Reverse Linked List步骤。 /** * Definition for singly-linked list. * public class ListNode { ...
[分析] 两条直线若包含一个公共点且斜率相同,则为同一条直线。因此依次将数组中各点设为公共点,并计算所有未当过公共点的其他点同当当前公共点形成直线的斜率,使用哈希表保存各斜率直线上的点数,遍历过程中同时更新维护一条直线上包含的最多点数。 实现1中key直接就是double类型的斜率,实现时有几个注意点: 1)斜率为0时要单独判断并显式赋值为0,double类型0 和 -0是不等的 2)需要考虑输入中可能存在重复点 3)map,same, max为什么要放在循环里头定义?为什么需要max 和ret两个变量?因为它们统计的是以points[i]为公共点时数据,max可以看做时局部最大值,ret是全局 ...
[分析] 处理int型整数运算时,为避免溢出,省事的做法就是内部转为long类型处理,不然极可能在极值case上栽跟头,比如int a = Integer.MIN_VALUE, int b = -1 和 long a = Integer.MIN_VALUE, long b = -1, 两者a / b的结果是不一样的,前者会发生溢出, 在比如Math.abs(Integer.MIN_VALUE) 结果竟然是Integer_MIN_VALUE,这都是各种Wrong Answer耐心地告诉我的。 实现2参考https://leetcode.com/discuss/23079/my-clean-java ...
[分析] 思路1:维护两个哈希表,char[] map, boolean[] used, 长度均为256,map[charS] = charT, 表示将字符charS 映射为charT, used[charT]==true 表示charT已经被某个字符映射过了。同步遍历字符串s & t,记两者当前的字符分别为charS, charT, 若charS是新字符,且charT没有被使用,则我们可将其同charT建立映射关系,否则说明有两个不同的字符试图映射到同一个字符上,不符合要求;若charS已被建立映射关系,则检查charT是否和charS的映射字符相等,不相等不符合题目要求的“All o ...
[分析] 思路2让我大开眼界,顺便学习下BitSet~ [ref] https://leetcode.com/discuss/53180/1-4-lines-python-ruby-c-c-java public class Solution { // Method 2: https://leetcode.com/discuss/53180/1-4-lines-python-ruby-c-c-java public boolean canPermutePalindrome(String s) { BitSet bs = new BitSet(); ...
Given a string, we can "shift" each of its letter to its successive letter, for example: "abc" -> "bcd". We can keep "shifting" which forms the sequence: "abc" -> "bcd" -> ... -> "xyz" Given a list of strings which con ...

Leetcode - Count Primes

    博客分类:
  • Math
[ref] https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes https://leetcode.com/discuss/34622/my-c-solutions-in-44ms-time-nearly-o-n-and-space-nearly-o-n public class Solution { // https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes // https://leetcode.com/discuss/34622/my-c-solutions-in- ...
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down). Find all strobogrammatic numbers that are of length = n. For example, Given n = 2, return ["11","69","88","96"]. [分析] 实现2参考https://leetcode.com/discuss/ ...
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 a string. For example, the numbers "69", "88", and "818" are all strobo ...
[分析] find的version1 版本注意num2Occur 需定义为Integer类型,建议version2版本 [ref] https://leetcode.com/discuss/19515/my-solutions-java-and-python-time-for-add-time-for-find-space public class TwoSum { private HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); public void add(int ...
[分析] 从低位往高位逐位相加,就是这么一个简单的题却花了我一个多小时,无力骂自己了…… 一开始想到用StringBuilder保存结果,但为了得到结果我需要每次将新算的一位insert到最前面,这样效率比较低,于是转而使用数组保存结果,数组预先开成两个字符串最大长度加1,这种coding起来其实很麻烦,要维护三个下标,很容易出错。 其实是对StringBuilder接口不熟,没有意识到它有reverse方法; 发现自己潜意识里有一口吃成胖子或者一步登天的想法,使用StringBuilder得到逆序结果就不行吗,自己再想办法逆成正确的呗; 小处的节省常常会让自己得不偿失,计算一位的结果时一开始想 ...
[分析] base version说几句: 数组题一定要考虑重复重复重复的问题!另外循环结束要记得最后一次更新maxLen O(N)解法思路请移步http://blog.csdn.net/linhuanmars/article/details/22964467 public class Solution { // Method 1: base version, first sort, then scan to find public int longestConsecutive1(int[] nums) { if (nums == null || nu ...
Global site tag (gtag.js) - Google Analytics