Leetcode日记6

(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)使用异或运算。

相关文章
相关标签/搜索