Leetcode刷题日记(五)
刷题的第五周了,这周开始刷Medium的题,每天2-3题吧
目前进度:
68/100
1.2020/04/13
a).题目:
数学思维题,通过两数相加完成数值交换
A=A+B
B=A-B
A=A-B
![](https://img.haomeiwen.com/i11846745/593d72f52dc07724.png)
答案:
![](https://img.haomeiwen.com/i11846745/e8817a74df298f26.png)
b).题目:
新建一个矩阵,并全部填充为-1。
1,2,3
4,5,6
7,8,9
当翻转第一行时,新数组变成了
-1,-1,1
-1,-1,2
-1,-1,3
matrix[0][0]变成了matrix[0][2]
matrix[0][1]变成了matrix[1][2]
matrix[0][2]变成了matrix[2][2]
所以旋转的index为matrix[col][len(matrix)-row-1]
最后不能直接newMatrix=matrix,而是需要将newMatrix的每个值重新赋值给matrix
![](https://img.haomeiwen.com/i11846745/4ad58e3d257e1c6b.png)
答案:
![](https://img.haomeiwen.com/i11846745/efc299f445861644.png)
c).题目:
先建立一个含有空list的list,之后遍历nums,每次加入新的元素,并找到和他有关的所有子集。
例:nums=[1,2,3]
round: 0
[[1]]
round: 1
[[2]][[2], [2, 1]]
round: 2
[[3]][[3], [3, 1]]
[[3], [3, 1], [3, 2]]
[[3], [3, 1], [3, 2], [3, 2, 1]]
![](https://img.haomeiwen.com/i11846745/0ff8ad59318577ab.png)
答案:
![](https://img.haomeiwen.com/i11846745/d4659d4a5f1d0c6e.png)
刷题进度:
71/100
![](https://img.haomeiwen.com/i11846745/f127188b4eecbf7d.png)
2.2020/04/14
a),题目:
将原数组进行随机排列,之后检查result里有没有随机排列后的数组,如果没有,加入result。
![](https://img.haomeiwen.com/i11846745/0d28cae7683aa4db.png)
答案:
![](https://img.haomeiwen.com/i11846745/d7a76da62c63530f.png)
b).题目:
Stack题
stack包含:stack数组,stack的长度,stack的最大长度
判断stack的长度是否大于k,如果大于k,stack里的值全部加上val。如果不大于stack,更改stack里前k个值。
![](https://img.haomeiwen.com/i11846745/29b851f65b305054.png)
答案:
![](https://img.haomeiwen.com/i11846745/65f6f8aa8066c29d.png)
c).题目:
动态规划题
up为nums的最长上升list
down为nums的最长下降序列
当数组为上升趋势时,更新up[i]=max(up[i],down[j]+1)
当数组为下降趋势时,更新down[i]=max(up[j]+1,down[i])
最后,因为up和down的递增性,up[i]一定比down[i-1]大
同理,down[i]一定比up[i-1]大
所以返回max(up[len(nums)-1],down[len(nums)-1])+1
![](https://img.haomeiwen.com/i11846745/83902b99b4761f5d.png)
答案:
![](https://img.haomeiwen.com/i11846745/81eda8b2ddf5b514.png)
目前进度:
74/100
![](https://img.haomeiwen.com/i11846745/77405f51349a79bd.png)
3.2020/04/15
a).题目:
collections.Counter()函数保留了S和T的每个字母的顺序
使用counterS+counterT-counterS使返回的为按顺序排序后的list,之后把list放入result。
![](https://img.haomeiwen.com/i11846745/fcbfb7abffb1e11c.png)
答案:
![](https://img.haomeiwen.com/i11846745/b359352a825bb920.png)
b).题目:
找到word1和word2在list中的所有index,之后每个word1的index和word2的index相减,最小的就是两个词的最短距离。
![](https://img.haomeiwen.com/i11846745/d226e3262995f502.png)
答案:
![](https://img.haomeiwen.com/i11846745/25e0f640fb090be4.png)
c).题目:
解法1:通过collections.Counter()查看出现次数,返回出现次数等于1的数字
解法2:使用set移除nums中所有复数出现的数字,对原list进行删除。如果删除一次后,原list中不存在删除的值,则返回删除的数字
![](https://img.haomeiwen.com/i11846745/070ce29facb64f20.png)
解法1答案:
![](https://img.haomeiwen.com/i11846745/a7d7eaf7c0cdb36a.png)
解法2答案:
![](https://img.haomeiwen.com/i11846745/815c2194fccfcd56.png)
目前进度:
77/100
![](https://img.haomeiwen.com/i11846745/76ff87c2b017bf46.png)
4.2020/04/17
a)题目:
如果root=None则找不到目标节点
如果root=q或q,则root的左子树或者右子树中含有目标节点,则返回root
如果左子树和右子树各有p或q中的一个,则返回root
如果两子树中含有p或q的一个,则返回该节点。
![](https://img.haomeiwen.com/i11846745/8fac68b53bd1564f.png)
答案:
![](https://img.haomeiwen.com/i11846745/e2706cb77443b923.png)
b).题目:
将时间转化为分钟数,并存入list中从大到小进行排序。
找到list中两两相减的最小值。
如果list[0]比list[1]大,则返回sub
否则返回list[0]+1440-list[1]
![](https://img.haomeiwen.com/i11846745/e597d216349e954f.png)
答案:
![](https://img.haomeiwen.com/i11846745/0ae546652199d1cc.png)
c).题目:
当A=0或B=0时,返回0。
当A=1且B>1时,返回B。
当B=1且A>1时,返回A,
否则,直到B=1时,A=A+result,result=A
![](https://img.haomeiwen.com/i11846745/67c23bb1b8c53c61.png)
答案:
![](https://img.haomeiwen.com/i11846745/60e3ed2f60ed4109.png)
目前进度:
80/100
![](https://img.haomeiwen.com/i11846745/a09e43a76fa30496.png)
5.2020/04/17
a).题目:
新建一个list,把链表里的所有值放入list中。
当list长度为偶数时,直接两两交换。
当list长度为奇数时,除最后一个元素外,两两进行交换。
list顺序颠倒后(头插法),将list中所有元素放入链表l1中并返回。
![](https://img.haomeiwen.com/i11846745/bca0b6e77dcee153.png)
答案:
![](https://img.haomeiwen.com/i11846745/0ae6bdb78c68b317.png)
b).题目:
使用set去除所有duplicate元素,并使用dict将所有元素和出现次数对应。
删除nums的元素,直到nums的长度等于0时,并更新numsDict中对应元素的出现次数。
遍历numsDict,返回出现2次的数。
时间复杂度: O(3n)=O(n)
![](https://img.haomeiwen.com/i11846745/a239b91858afe08b.png)
答案:
![](https://img.haomeiwen.com/i11846745/35c7d94ebfae9c3c.png)
c).题目:
使用collections.Counter()函数获得每个字母的出现次数。
新建charList和freqList存储字母和每个字母出现的频率。
对频率进行从大到小排序,并根据频率大小,对charList进行排序。
将charList的元素*对应频率赋值给result并返回。
![](https://img.haomeiwen.com/i11846745/6174cf2dcddfebac.png)
答案:
![](https://img.haomeiwen.com/i11846745/6adbbdce183b2bd6.png)
目前进度:
83/100
![](https://img.haomeiwen.com/i11846745/a6958b48abb0b580.png)
6.2020/04/18
a).题目:
查看word[i]和word[j]是否有相同字母。
如果没有,将len(word[i] * len(word[j])存入result数组。
如果result数组的长度为0,则返回0。否则返回result数组的最大值。
![](https://img.haomeiwen.com/i11846745/95140f6e692f6aa4.png)
答案:
![](https://img.haomeiwen.com/i11846745/f223afd74ab1f3cf.png)
b).题目:
新建一个空的dict,将strs的每个字母排序所谓dict的索引,将原来的值作为索引的值。
返回所有索引的值
学了下collections.defaultdict(),下附截图
![](https://img.haomeiwen.com/i11846745/095d5de661b31e3d.png)
![](https://img.haomeiwen.com/i11846745/a3ca105e97c1220b.png)
答案:
![](https://img.haomeiwen.com/i11846745/eaedba00db2fb286.png)
c).题目:
使用count记录链表的index
将链表中index为奇数的元素存入oddList,index为偶数的存入evenList。
将oddList和evenList合并为tempList=evenList+oddList
新建一个链表,将tempList中所有元素使用头插法(需要reverse tempList)存入链表,并返回新建链表
![](https://img.haomeiwen.com/i11846745/ddf9cc7acd82c35a.png)
答案:
![](https://img.haomeiwen.com/i11846745/92d2501cc9374a23.png)
目前进度:
86/100
![](https://img.haomeiwen.com/i11846745/688821e0e742459c.png)
7.2020/04/18
a).题目:
先使用spilt()函数分割字符,得到listA和listB两个数组。
找出listA和listB两个数组的不同部分,并存入result。
删除result中listA和listB重复出现的元素。
![](https://img.haomeiwen.com/i11846745/ea87aedbf225dd1c.png)
答案:
![](https://img.haomeiwen.com/i11846745/a76499eaa0873ead.png)
b).题目:
将链表l1和l2的值存入string。
将string变为int并相加,之后再次转换为string。
新建一个list,存储string的所有元素。
新建一个空的链表,将list翻转(头插法)后加入新链表并返回。
![](https://img.haomeiwen.com/i11846745/7580bcc56b4b5b25.png)
答案:
![](https://img.haomeiwen.com/i11846745/92a42cc9f16e8370.png)
c).题目:
将head里所有值存入list。
新建2个list,一个用来存比headList中比target小的值,一个用来存headList中比target大或等于的值。
合并2个list,并颠倒该list(头插法)。
新建一个链表,将list中所有值加入新建链表并返回。
![](https://img.haomeiwen.com/i11846745/11167f7dda6ba3f7.png)
答案:
![](https://img.haomeiwen.com/i11846745/5290399340521170.png)
目前进度 :
89/100
![](https://img.haomeiwen.com/i11846745/16b7e1e28eaffe5c.png)