自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(257)
  • 收藏
  • 关注

原创 266 Palindrome Permutation

理解了题意,化简的意思就是,出现次数为奇数的字母 的数量不能超过1个。。 我之前的代码就是按这个思路写的,要过一次string,还要过一次map,效率只有10-20%; public class Solution { public boolean canPermutePalindrome(String s) { Map map = new HashMap<>();

2017-03-26 07:19:17 247

原创 242 Valid Anagram

请在3分钟之内写完。 之前代码: public class Solution { public boolean isAnagram(String s, String t) { char[] ss=s.toCharArray(); Arrays.sort(ss); char[] tt=t.toCharArray(); Arr

2017-03-26 06:45:43 262

原创 202 Happy Number

一道简单题,之前做的时候就印象比较深刻。 要实现的数字转化A to B 很简单,关键是如何判断是不是happy:是很好判断,但是什么是不是呢? 这就是涉及到到 A to B, B to C, C to .... 一直进行下去,有回到A, B, C中的任何一个都形成一个 loop/cycle 那就不会到1,所以转化成了 查询 重复值 的问题了。 以前的代码: public class Sol

2017-03-26 06:27:31 252

原创 13 Roman to Integer

其实还有点小意思,就String和Integer之间的数字转化, 把罗马数字String和Integer之间的转化规律用代码表示出来。。。 罗马数字规律:1,大方向:从左到右,所以用for loop + string.charAt(index) 来实现string的遍历;2,大多数情况,左大右小,是加法,所以大小判断要有数值,用HashMap来实现转化;3,如果是左小右大,那就是减法。就这三点,

2017-03-26 02:42:11 490

原创 1 Two Sum

这题到处都有。。。无语。。。 我看到了就只能在联系一遍。。。 之前代码:public class Solution { public int[] twoSum(int[] nums, int target) { HashMap map= new HashMap<>(); int[] result= new int[2]; for(int

2017-03-26 02:13:54 218

原创 125 Valid Palindrome

之前代码: public class Solution { public boolean isPalindrome(String s) { if(s==null) return false; if(s.equals("")) return true; int len=s.length(); int left

2017-03-26 01:55:19 194

原创 149 Max Points on a Line

做这道题是看到一亩三分地的面经,PhD找Uber SE 暑期实习,卧槽面了两道hard和一道系统设计,果然要求不一样,估计工资也不同吧。。。 此题为hard:1是因为解法不明显,2找到解法后还有些细节要处理,具体见代码。一开始是没有思路的,参考了code ganker大神的代码,重新实现一遍,也改了一个小瑕疵,就是加了 (long),不加的话leetcode上最后3个test case跑不过,于

2017-03-22 13:59:40 259

原创 42 Trapping Rain Water 【基本解法和优化方法】

这题挺有意思。最naive的想法就是看每个位置左右两边的bar的高低,然后来决定当前位置能装多少水。有意思的地方在于,每个位置的组左右高度,不是其相邻位置的高度,而是整个左边部分和右边部分的最大值!这是一个最关键的规律,发现了规律,就可以顺利解题了,剩下的事情就是用什么算法来实现,算法的效率复杂度的区别了。 最直接的方法,遍历每一个元素,在扫一遍左右两边,找到左右最大值,然后取较小值,就找到了t

2017-03-22 03:06:54 1217

原创 37 Sudoku Solver

接着上一道题,在此基础上,求sudoku的解法。虽说是一道hard题,有了前面的基础,加上正确的思路和backtracking的设计,还是比较好理解的。 基本的思路还是:遇到 . 的空格就把1-9的数字都尝试一遍,这就相当于分支呀,for loop来实现。然后要判定数字是否符合,那么就是要进行分支的筛选/剪切,这个符合条件就得写一个其他函数,isValid。再之后如果符合,就走到下一个格子,同时

2017-03-21 06:56:00 289

原创 36 Valid Sudoku

接下来写两道题,Valid Sudoku 和 Sudoku Solver,分别是判断现有的九宫格是否符合要求,和 求出九宫格的解法。 Valid Sudoku 之前写过两次,第一次是很naive的写法,通过很new出一个新的array来检查duplicates的element,因为那时还不知道HashSet这么好用的东东。 第二次是用到了HashSet,并且学到一个很好用的方法,set.add

2017-03-21 05:45:57 193

原创 145 Binary Tree Postorder Traversal

最后一个,后序遍历,postorder 递归解法的代码如下: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; }

2017-03-20 14:53:35 248

原创 144 Binary Tree Preorder Traversal

先把递归解法的代码贴上: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public clas

2017-03-20 14:13:47 194

原创 94 Binary Tree Inorder Traversal 【递归和迭代的对比较分析】

一道很常规的二叉树遍历题,相信大家都在课上学习过。 但是题目要求是不能用递归调用的方法,也就是课上讲过的方法。要用iterative迭代的方法,也就是一个一个找,通过while循环来输出。 先把递归的方法代码写出来,如下。要注意的是,我连递归调用都不能立马想起来,只想到了当node是null时,什么都不用做。那么当不是null的时候呢?其实就是按照preorder的顺序,摆放的三行代码即可,怎

2017-03-20 13:31:52 293

原创 1 2Sum 【分析总结,归类记忆】

作为leetcod开篇第一题,一定被大家熟知,解法也有多种:1,夹逼法,复杂度:NlogN+N;2,HashMap法,N,因为用空间换时间;(其实是N平方,但是利用了HashMap中查询操作复杂度为1,把N变为了1,所有就有 N*N -> N*1) 写在这里,是因为和上一道first bad version 解法类似,归类在一起,下面是夹逼法解题,时间复杂度是NlogN,空间复杂度为1,代码如下

2017-03-20 01:45:44 325

原创 278 First Bad Version 【拓展分析,自己出题】

前面5道题都是围绕 rotated sorted array来展开,是二分法解题的一种拓展。跳出这个 rotated sorted array 是否还有别的二分法拓展解题呢?我想到了两个:1,本题,first bad version;2,two sum two sum 很明显,先进行排序,得到了sort array;first bad version呢?本质上也是一样的,左边所有都是good v

2017-03-20 01:04:24 303

原创 154 Find Minimum in Rotated Sorted Array II

接着上一题来,在带有 duplicates的 rotated sorted array 找最小数。 基本思路和不带duplicate一样,不带duplicates的情况,只要判断两个条件:1,左边递增;2,右边递增。对应的去更新left和right,关键的解决方案就是当left==right时,就是找到的min。 带有duplicates的话,就加一个判断条件,else来表示,这个时候righ

2017-03-19 06:50:47 187

原创 81 Search in Rotated Sorted Array II 【优化版,从right开始】

之前的代码: public class Solution { public boolean search(int[] nums, int target) { int left=0; int right=nums.length-1; while(left<=right){ // 通过夹逼法缩小范围,类似二分,必须有lef

2017-03-18 08:09:04 177

原创 153 Find Minimum in Rotated Sorted Array

接着上面的两道题,仍然在这个rotated sorted array中变换出题。这道题是要找出最小的那个数(当然也可以是最小数的index) 之前写的代码如下,还包括了好长的思考比较,唉,一开始我还真是非常认真,非常耐心去抠细节的: public class Solution { public int findMin(int[] nums) { // 1.24 做fir

2017-03-18 07:50:05 137

原创 33 Search in Rotated Sorted Array

接着上一道题:Search in rotated sorted array, containing duplicates,含有重复元素 这一道题是简化版:Search in rotated sorted array, containing no duplicates,不含重复元素 之前用了递归的解法,思路是一样的,有点意思,代码如下:【不同时候对同一道的写法可以完全不一样,

2017-03-18 06:58:31 171

原创 81 Search in Rotated Sorted Array II

这题是在之前做过的一道题的follow up,之前的题说明了sort array中没有duplicate,但是这题里强调说有duplicate,那么就是要针对这以特点进行特殊处理。 基本逻辑还是一样的 通过left 和 right 夹逼来缩小搜索范围【使用while loop,内部条件是left<=right,是可以相等的,因为left和right都可能是target,但是只有允许left==

2017-03-18 05:17:59 191

原创 92 Reverse Linked List II

逆转部分LinkList,和逆转整个LinkList的题目是一样的,沿用之前的思路就可以,新建一个dummyNode,把要逆转的部分通过头插法连接起来。 这道题稍微有点麻烦,就是分步骤: 1,找到逆转部分的之前一个node,作为第一个attach point 2,确定逆转部分的最后一个node,作为第二个attach point 3,完成扭转之后,attach两次既可! 一个技巧,因为m

2017-03-17 01:39:41 226

原创 146 LRU Cache

这是一道hard题,因为Uber群里说面试过,所以做一下题目意思的原型是LRU cache,就是在一定capacity的cache下需要有效的利用空间,把滞留的时间最长没有使用的内存给替换掉,要求取地址和替换替地址的复杂度都是O(1),因此需要HashMap和DoubleLinkedList来实现。 题目中的key 和 value代表了内存地址和存储的数据,这里只用int来表示只是为了简化,因为

2017-03-16 14:48:21 330

原创 535 Encode and Decode TinyURL

url 长短两个类型的转化,初一看题意并不明确,不知道是否要保留http://  但参考了别人的答案后发现,其实并不需要,就是相当于一个长字符串和短字符串 之间建立一一对应的关系,其实就相当于字符和index之间的对应关系,稍微扩展一下就是这道题的解法的。 用动态array,ArrayList 就可以解决问题。代码如下,这里把index当作shortUrl比用size当作shortUrl更方便

2017-03-16 11:03:20 2024

原创 359 Logger Rate Limiter

一道简单的记录login日志的题,因为在论坛上看到这道题是Uber面试中出现的。 逻辑很简单,用户名和时间进行配对,只有在一种情况下才会判断不可以打印:之前该用户已经存在,且,是在之前10秒内login的。。。因此用HashMap来记录最新的用户登录信息即可 public class Logger{ HashMap record; /** Initi

2017-03-16 02:26:56 493

原创 重启Leetcode模式,在无尽的Google Team Match中重生

上次写博客应该是3周之前,为什么记得这么清楚,因为1周等Google通知,2周等Google team match,这中间我的心情比较混乱也没动力做题。然而现在仍然没有host对我感兴趣,不知道最终Google offer能不能来。我自己也开始胡思乱想焦虑,其实早就该接着做题来摆脱负面情绪了。 等待面试通知,得知通过面试,联系校友朋友找host,起起落落的情节让我情绪也忽高忽低,同时也明白了自己

2017-03-15 14:41:14 4178

原创 373. Find K Pairs with Smallest Sums

这道题和上一道很类似,就等于是把两个 数组分别作为一列和一行,然后拼成一个矩阵,当然,没有必要去正真生成一个矩阵去加和,那就傻了,耗费时间和空间 只要通过自定义Tuple,按照sum来排序,通过PriorityQueue来维护最小元素,就可以了 代码如下,就这道题来说,还是性能很高的 80-90% public class Solution { public List kSmalle

2017-02-24 08:21:08 199

原创 378 Kth Smallest Element in a Sorted Matrix

这道题,还是比较有难度,要对这种无序集合进行排序输出,而且提到的是smallest,最先想到的就是用PriorityQueue 首先来发现一些特性,左上角的数最小,右下的最小,相邻的元素也有判断,但是同一个node的右边和下边谁大谁小是不知道的,那么就需要用PQ来辅助 思路是: 把第一排的数挨个放入,显然这已经是排序好了的,所以弹出的值,首先是当面PQ中最小的,但是怎么维持也是当前剩下的整个

2017-02-24 07:45:50 201

原创 138 Copy List with Random Pointer

一种最简单的思路:两次遍历:1,new 出所有copy node,同时用map来维护一一对应的关系;2,通过一一对应的关系来把每个new node 的next 和 random 都设定好 下面的代码性能有点低,才25% /** * Definition for singly-linked list with a random pointer. * class RandomListNode

2017-02-23 12:57:55 236

原创 450 Delete Node in a BST

这就是一道很基础的BST搜索树的题,自己应该写过,在MyEclipse里应该有保存,更完整的版本应该是有所有基本方法,insert,find,然后就是这个delete 递归调用的思路: 1,非常重要的一点就是:返回的是一个树的root!!这个root就是一个node,可以被其他的node通过left,right 连接上的 2,通过值的大小进行二分法的缩小范围 3,如果相等,也就是说找到了目

2017-02-23 08:33:15 218

原创 337 House Robber III

这道题把题目理解错了,只是根据它举的两个例子去理解了,所以没有真正的把握题意 题意的本质是找到所有不相连的node的sum的最大和,那么首先就要找到不相连的node所能组成的集合,根据例子最直接的理解就是隔层的node都符合不相邻的条件,所有分成 奇数层 和 偶数层就可以了。。。于是按标准的层序遍历就可以搞定了,通过queue不断加入node,再pop node就okay了 结果发现,只能通过

2017-02-23 06:39:51 249

原创 516 Longest Palindromic Subsequence

首先,要把题目理解清楚,subsequence和substring的区别,subsequence是说自序列,只要字母的前后顺序没有变都可以组合在一起,substring是子字符串,那就是要串在一起的,就像项链,每个珠子串在一起相邻的那才叫子字符串。。 题目还是有点难度,对于DP还只能依葫芦画瓢,对状态转移的过程还不是非常敏感。。。但是这道题通过代码和老老实实,一个一个格子的画图,还是有些感觉,就

2017-02-22 13:51:42 491

原创 208 Implement Trie (Prefix Tree)

这道题的本质是一个普通树,也就是说有很多分支,在这个情况下的具体运用就是单词的存贮,序列的存储。。。ECS124上其实就涉及过这道题,那就只有AGCT4个字符了 代码如下,性能还可以,这就是个DFS的算法,但是我看还有效率搞出5-10的算法,等到第二遍再看。。。 class TrieNode { //public val; // no need to have a value, ei

2017-02-22 08:54:49 145

原创 230 Kth Smallest Element in a BST

可能因为之前对一个非递归的 in-order traversal 来遍历BST的方法印象深刻,记忆犹新,立马就想到了这个方法,把kth-element这个信息加入进去就很容易解题了。。。 代码如下,但是耗时2ms,性能不是很高,只打败了20+% /** * Definition for a binary tree node. * public class TreeNode { *

2017-02-22 02:17:52 179

原创 249 Group Shifted Strings

不是很难的一道题,典型的用HashMap将String分类,关键是找到分类的标准,也就是找到map中key是什么。。。这道题就是与我google加面的题目很像。所以我就分开写了一个函数来使用,如果在主函数里面写,会写的非常不好看,readability很差 仔细检查后,一遍bug-free,而且效率也挺高85%, public class Solution { public L

2017-02-22 01:42:14 453

原创 挫折是必然的,未来仍光明

前天晚上收到FB的据信,心有不甘,难免郁闷。。。 昨天一整天都情绪低落,有如任何一次失意,比如身体不舒服,焦急等待结果,失恋,被沮丧的情绪包裹住大脑和身体,干不了别的事情。。 于是我看奇葩说,分散注意力,直到看到不想看。。在网上搜 被FB拒了后怎么克服失落心态,结果还发现了Brain Acton这样的例子,晚上还是不安,又翻看Steve Job在Stanford的演讲和其他场合的演讲。。任然让

2017-02-22 00:39:26 287

原创 254 Factor Combinations

用了个backtracking的思路,不断累积,知道n除以自身变为1。。。但是这个算法一看就很多余,有很多多余的步骤,果然效率很低。。。 代码如下: public class Solution { public List> getFactors(int n) { List item = new ArrayList<>(); List> list= new

2017-02-19 12:58:18 253

原创 171 Excel Sheet Column Number

这道题的反向转化,也做过,那道题稍微复杂一点,因为有个进到while() loop里,n-1的步骤,把数字转化成excel的col,虽然是26进制,但是这个26进制没有0,与正常的的0-25这样的26进制相比,这里有offset=1,是1-26,所以n需要减1,再按照正常的26进制的方法来计算,链接在此:https://leetcode.com/problems/excel-sheet-colum

2017-02-19 02:19:48 170

原创 155 Min Stack

稍微考虑了一下,只用list (stack 其实更简单,且符合题意,但都是线性结构就都可以) 看能不能搞定,但是发现没有简单办法去track min,比如pop出去的正好是min,就不好处理了。。。 所以加了个PriorityQueue来辅助,问题很容易解决了。 注意的是:.remove() 的方法,在ArrayList和PQ中有不同的输入,PQ的输入只能是 object,不能表示index,

2017-02-19 02:07:17 270

原创 290 Word Pattern

写的时候把pattern和str搞反,没看清楚题意就动手,浪费时间。。。基本的思路就是把pattern和str都转化成同一个编码表达体系,然后逐个检查每个unit对应的编码是否一样。。。 性能略低,但是第一步是先work,我敢肯定,在面Uber前,这些题我都要再做一遍。。。 public class Solution { public boolean wordPattern(S

2017-02-19 01:57:37 204

原创 242 Valid Anagram

一道简单题,在另外一个medium的题中已经直接用anagram这个概念了,好像是把anagram一样的次存放在HashMap的value部分,这个部分是一个String list 所以很简单了,唯一的bug,在使用Arrays.sort(array); 时要注意这里不返回任何东西,只是把array进行排序处理了,所以我试图一句话写完这个程序还是不行的。。。 另外,array to Strin

2017-02-18 09:43:11 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除