07 2016 档案
摘要:写的时候有点困了,0那里没有处理好
阅读全文
摘要:首先找到那几种是可以Strobogrammatic的 然后一个walker,一个runner,然后walker <= runner的时候比较是否是一组一组的 要等于因为2就并不是Strobogrammatic
阅读全文
摘要:比1多了一个判断是不是相同的
阅读全文
摘要:这几题都挺没意思的,建一个hashMap,里面存放出现过的位置的list short稍微有点讲究,就是不要两个都重头找一遍,每次只移动小的那个
阅读全文
摘要:碰到这个是挺不懂的 就是设计一个stack,然后每次调用hasNext()的时候就把最后一个元素展开,循环,直到展开到有single interger为止
阅读全文
摘要:最开始一下子想不出来好的方法用的是O(n*sizeof(integer))的方法,辗转相除,每次除以2以后的余数就是bitwise上的数字。 然后我自己想了下O(n)的方法 总体的想法是一组一组,每组的size是小于该数最大的2^n的值。 即res[4]=res[0]+1, res[5] = res
阅读全文
摘要:就是HashMap吧 好吧,我写得太丑了 别人的方法:https://discuss.leetcode.com/topic/20314/accepted-java-o-n-solution-in-5-lines/2 实在是很好看= =……下次还是要看看别人写的 因为一共就26的字母,他建立了一个长度
阅读全文
摘要:需要用递归来做,把input从头到尾走一遍,如果是符号的话,递归算出两边可能的结果,再计算所有的组合。 当然退出的条件是,如果整个input就是一个操作数,那么就把这个数加到结果中去
阅读全文
摘要:discuss里面的方法,最先把坐标放在格子的右上角。 如果当前格子比target小,那么就把col往左移动,因为已经是排好序了的,所有右边的都比它大 如果当前格子比target大,就把row往下移,因为上面行的都比它小 否则(即相等),就返回true;
阅读全文
摘要:自己想的就差一点点,好可惜!! 正着走一遍,每一格里面存的是,从0到这一位之前的数连乘结果。 再反着走一遍,用各自里本身的值,乘以从后往前除它之外的连乘结果,然后更新连乘的结果
阅读全文
摘要:烦躁~正好做一题简单的 就是把node后一个数的值保存到这个节点上,然后跳过后一个节点
阅读全文
摘要:也是一遍AC,开心 和上题差不多,思路 代码:
阅读全文
摘要:一遍AC 思路 代码:
阅读全文
摘要:哈哈开始自己写得太丑啦><没眼看 然后现在这个方法比较巧的地方是,在pop()的时候执行peek() 在peek()的时候把stack1里剩的都倒腾到stack2里面,这样如果stack2不为空就可以保持一致输出。
阅读全文
摘要:我的方法是: 1.数出链表的长度 2.找到中间的节点,reverse后半截 3.两头开始走比较
阅读全文
摘要:就是tree的非递归Inorder traversal。 https://leetcode.com/submissions/detail/46458334/
阅读全文
摘要:Power of four(http://www.cnblogs.com/warmland/p/5690363.html)的部分 要注意的是,因为给的int,所以小于等于0的部分要单独处理
阅读全文
摘要:因为要找出现次数大于1/3的数,所以就是要找出现次数最多的2个数,并且次数要超过Len/3 维持最频繁的两个数的思路: 如果当前数和ele1相同 cnt1++; 否则,如果当前数和ele2相同(与ele1不同,但是与ele2相同) cnt2++; 否则,如果如果cnt1 == 0(当前数和ele1与
阅读全文
摘要:挺简单的没什么要点,也没有什么边界情况
阅读全文
摘要:做法就是: 如果root是null,返回 swap左右两树(用tmp作为第三个容器),然后对左右子树递归 返回root
阅读全文
摘要:开始写了两个queue的,实在太丑了,不好意思贴上了,改成了一个queue
阅读全文
摘要:蠢错误翻得够够的。 注意的地方就是,有可能并没有overlap 下次一定要看清题目。 注意变量的scope. 注意返回
阅读全文
摘要:二叉树基本: 一棵深度为k的二叉树,如果它有2k-1个结点,那么就是一棵满二叉树 full binary tree 一棵深度为k的二叉树,如果它k-1层都是满二叉树,只有最后一层不满,叫做complete binary tree。一个有n个结点的完全二叉树,层高为log2N+1,最后一层上可能有1个
阅读全文
摘要:又是很简单的题,不说什么了 有个很好看的解法: 只用hashSet, 每次都记得把距离k以外的数去掉,只要查到就是true
阅读全文
摘要:水一题,一个hashSet记录看到过的
阅读全文
摘要:backtracking,自己很快写出来了,很开心呢
阅读全文
摘要:首先复习一下quicksort. 先理解partition函数,就是选序列的最后一个数作为pivot,比它小的排到它左边,比它大的在它右边,它在中间。但是它左右的部分并没有排序。 返回值是这个pivot所在的位置,pivot所在位置就是它最终的位置,也就是说比如index是5,说明它就是第6大的数。
阅读全文
摘要:就是trie 68行那里要return false因为在62行处,可能没有结果,开始写成true死都调不出来
阅读全文
摘要:标准trie的结构是 但是这题里面我们不需要freq也不需要hashset,但是为了表示当前节点是不是作为过一个词的结尾,我们设置一个boolean isLeaf。 这么做的理由是,考虑以下两种情况: 1. 假如插入ab,但是要搜索a,就应该返回false,搜prefix就应该返回true 2. 插
阅读全文
摘要:和207 Course Schedule是一样的
阅读全文
摘要:1. Two pointer runner只走一遍,每次往前走一格,如果walker可以往前缩就一直缩到依旧满足条件的最远的位置。 最后不要忘了检查有没有满足条件的,如果没有就返回0 所以时间复杂度是O(n) 2. NlogN方法
阅读全文
摘要:正反两个字典,每次都正反检查一下
阅读全文
摘要:1 public ListNode removeElements(ListNode head, int val) { 2 if(head == null) { 3 return null; 4 } 5 ListNode dummy = new ListNode(-1); 6 dummy.n...
阅读全文
摘要:写一个digitSum的辅助函数,设一个曾经出现过的set,如果digit sum之后的数是曾经出现过的,就说明会出现循环,不会变成1,退出,返回false,否则循环 辅助函数和今天的reverse Integer一种操作方法,最后一位数字是n % 10, n更新为n/10,退出条件是n != 0
阅读全文
摘要:我竟然自己一下就写对了!!!!!! 我的想法是,设置一个visited[][]记录有没有访问过这个点,然后从所有没有访问过&&是1的点出发,标记相邻的1,然后调用几次填色函数,就是有几个岛 填色的函数的内容就是,首先是把当前点标记为1,然后是对于上下左右的点,如果没有超过格子边缘&&也是1的话,就递
阅读全文
摘要:哈哈自己一遍写好~开心! 就是一位一位数,最后一位的取法是 num & 1,如果是1就计数,然后去掉最后一位 n >> 1没啦~
阅读全文
摘要:第一种是普通的方法,但是注意不能溢出,因为不断乘以4之后,有可能超过Integer.MAX_VALUE 第二种是位操作。 1.如何判断是不是2的幂。 (num & (num - 1)) == 0 因为2的幂是10,100,1000,...也就是说,是一个以1开头,并且跟着一串0的数,如果减一取且,应
阅读全文
摘要:知识点 1. java中int和binary之间互相转换的自带函数 2. int的最大值是231-1,用二进制表示就是有31个1,int有32位,第一位是表示符号,java中没有unsigned int,如果有的话是32位 这题用string的方法做是: 不用考虑溢出的情况,因为unsigned i
阅读全文
摘要:建一个set, 是曾经遇到过的长度为10的string,然后对这个sample string从头到尾走一遍,如果曾经看到,那么就加到repeated set里,最后返回由repeated string组成的arrayList<String>里面。 之所以repeated也需要一个自己的set,因为有
阅读全文
摘要:原理minMax,最小化最大损失 从第i天到j天中,如果猜x的损失为x + Math.max(DP[i][x-1], DP[x+1][j]) 那么i~j天中最小的最大损失是Math.min(猜x的损失)
阅读全文
摘要:binary search. 开始偷懒了一下mid没有写成这样:mid = l + (r - l) / 2,于是卡了很久,简直报应= =
阅读全文
摘要:和rotate array是一个方法,把整个转过来,然后每个词单独转过来
阅读全文
摘要:方法一/二: 注意的是k有可能是invalid,要对数组的长度取余 1. 新建一个同长度的数组,把nums前n-k个元素拷到newArr中的后n-k个里 2.把nums后k个元素拷到newArr中的前k个中 3.把newArr整个全部拷贝回nums 使用System.copyarray(source
阅读全文
摘要:1. array copy System.arraycopy(source, sourcePos, des, desPos, len); time complexity: O(len) 2.
阅读全文
摘要:转成String,然后按照一定的规律排序,最后再连起来,如果给的值里全是0(一个或多个),那就返回“0”,否则返回连起来的结果。 排序的规则: 如果一位一位比较,如果某个数在前面的数字比较大,那么这个数就放前面。 如果两个数不一样长,并且前面的数字都相同,那么就那短的那个,和长的那个后面多出来的半截
阅读全文
摘要:建一个stack,最末的元素始终是最小的那个。 所以对于初始化,存到最左下角的那个节点。 对于找到next,就是存到,当前节点的右子节点的最左下角(如果有的话)。
阅读全文
摘要:方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false
阅读全文
摘要:方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false
阅读全文
摘要:思路: 设置一个counter,并且用res记录第一个数字,从第二个开始,如果这个数和前一个数是一样的,那么counter++,如果不一样,就把counter--,如果counter变成0了,就把res放到当前数字上。一遍走完,返回res就好了。 因为majority的数字超过一半,它总能中和调别的
阅读全文
摘要:建立一个二维的表,每一个格子的值,都是以此位置为结尾的最长的增序序列。所以这个值需要上下左右四个值来确定,就是一个dfs。 需要注意的是,如果已经被算出结果的值不需要再算一遍。 所以整个dfs的结构是,算出上下左右的值,找到最大的那个,当前值是四周比它小的最长序列的长度+1,否则为1
阅读全文

浙公网安备 33010602011771号