(2015/11/28)git
LeetCode 303 Range Sum Query - Immutable:(Easy)算法
1)超时的算法:每次调用sumRange函数进行一次累加运算。数组
2)不超时的算法:改变数组的内容,存储从0下标到当前下标全部元素的和。每次调用sumRange函数进行一次减法运算。数据结构
LeetCode 290Word Pattern:(Easy)app
1)创建两个map,使字符和字符串创建一一对应的关系。函数
2)2种状况的判断:pattern中的字符比string多,string比pattern中的字符多。spa
LeetCode 283Move Zeroes:(Easy)指针
1)i:指向非零元素要插入的位置;j:寻找下一个非零元素;zeronums:记录0的个数。orm
LeetCode 263Ugly Number:(Easy)(别人有更快的方法(待看))排序
1)循环除2,除3,除5,判断最后的结果。
LeetCode 258Add Digits:(Easy)
LeetCode 242Valid Anagram:(Easy)
LeetCode 299Bulls and Cows:(Easy)
LeetCode 292Nim Game:(Easy)
LeetCode 237Delete Node in a Linked List:(Easy)
1)将后面结点的值往前赋值。当下一个结点是最后一个结点时,中止。
(2015/11/29)
LeetCode 217 Contains Duplicate:(Easy)
1)排序比使用set判断是否重复更快。
LeetCode 171 Excel Sheet Column Number:(Easy)
1)使用下标访问string比使用迭代器更快。
LeetCode 168 Excel Sheet Column Title:(Easy)
1)除26取余法,注意判断余数为0的状况。
LeetCode 191 Number of 1 Bits:(Easy)
1)注意 & 的优先级小于 != 的优先级。
LeetCode 206 Reverse Linked List:(Easy)
1)使用3个结点指针,保存前一个结点,当前修改的结点,备份下一个结点。
(2015/12/5)
LeetCode 202 Happy Number:(Easy)
1)使用set备份,判断是否出现循环。
LeetCode 231Power of Two:(Easy)
1)位运算(循环)。(打表更快吗?)
LeetCode 189Rotate Array:(Easy)
1)构造另外一个vector<int>
2)经过3次翻转进行等效的移位。
LeetCode 160 Intersection of Two Linked Lists:(Easy)
1)计算两个链表的长度。用两个临时变量分别指向两个链表,指向较长链表的指针提早移动。
(2015/12/6)
LeetCode 190 Reverse Bits:(Easy)
1)位掩码,位运算。
LeetCode 219 Contains Duplicate II:(Easy)(can't do it)
1)保持一个长度为k + 1的set。遍历一次nums。
LeetCode 223 Rectangle Area:(Easy)
1)题目:计算两个长方体覆盖的总面积。
2)计算重合的面积。
(2015/12/12)
LeetCode 205 Isomorphic Strings:(Easy)(do more time)
1)不能两个字符对应同一个字符;若一个字符进行替换,则全部此字符都要进行替换;字符可用自身替换。
2)定义一个map,表示字符的对应关系。定义一个set表示已经进行替换过的字符。
LeetCode 203 Remove Linked List Elements:(Easy)
1)定义now和pre结点指针。注意now是头结点的状况。把head表示为最后链表的头结点。
(2015/12/13)
LeetCode 234 Palindrome Linked List:(Easy)
判断单向链表是不是回文的。
1)定义一个链表翻转的函数。
2)对后半链表进行翻转,用两个指针来判断。
(2015/12/14)
LeetCode 204 Count Primes:(Easy)
计算小于n的素数的个数。
1)思路:偶数不是素数、奇数乘以1个数也不是素数。
2)定义一个bool的容器。
(2015/12/19)
LeetCode 228 Summary Ranges:(Easy)
LeetCode 165 Compare Version Numbers:(Easy)
1)版本号string中只能包含数字和小数点,小数点的个数可能不止1个。
LeetCode 155 Min Stack:(Easy)(参考)
1)使用两个stack,一个当作普通的栈使用,另外一个用于获取当前栈中的最小元素。
2)若当前压入的元素小于等于当前栈中的最小元素时,同时将此元素压入另外一个栈。
(2015/12/20)
LeetCode 232 Implement Queue using Stacks:(Easy)
用堆栈实现队列。
1)使用两个堆栈。
LeetCode 225 Implement Stack using Queues:(Easy)
用队列实现堆栈。
1)使用两个队列。
LeetCode 278 First Bad Version:(Easy)
1)递归
2)求中点不能使用 int mid = (begin + end) / 2; 会溢出。可使用double变量。
LeetCode 136 Single Number:(Easy)
1)排序,能够不使用额外的空间。可是速度较慢。
2)使用set记录,速度更慢。
3)参考别人的方法得到了更快的速度:按位异或
一个数本身与本身异或,各个位变成0;
0与任何数异或等于那个数本身;
异或运算知足交换律。
LeetCode 260 Single Number III:(Easy)(参考待看)
1)排序。
LeetCode 122 Best Time to Buy and Sell Stock II:(Easy)(参考待看,《算法导论》)
1)由股票价格数组获得天天相对于前一天的收益数组。
LeetCode 238 Product of Array Except Self:(Easy)(参考待看:常数空间复杂度)
1)使用两个数组:一个数组中的元素表示,此元素及以前全部元素的乘积。一个数组中的元素表示,瓷元素及以后全部元素的乘积。
LeetCode 144 Binary Tree Preorder Traversal:(Easy)
1)递归:简单。
2)使用迭代实现,参考数据结构。
198动态规划
172n!的性质
319一排灯泡开开关关
(2015/12/26)
LeetCode 268 Missing Number:(Easy)
1)排序后从头开始判断。速度较慢
2)使用异或运算。