leetcode-838
纯模拟,我的写法是加了一个左侧指针,官方解答是双指针或者BFS
1234567891011121314151617181920212223242526272829303132class Solution: def pushDominoes(self, dominoes: str) -> str: length = len(dominoes) ans = '' i = 0 p = -1 c = '.' while i < length: if dominoes[i] == 'L': if c == 'R': if (i - p + 1) % 2: ans += 'R' * ((i - p - 2) // 2) + '.' + 'L' * ((i - p) // 2) else: ans += ...
leetcode-1345
1VLXNRGJP2$DQ6P.png)
BFS即可,每个节点的相邻节点分别是,左边一个,右边一个,以及相同值的节点:
123456789101112131415161718192021222324252627282930313233343536class Solution: def minJumps(self, arr: List[int]) -> int: from queue import Queue length = len(arr) table = dict() for idx, x in enumerate(arr): if x not in table: table[x] = [] table[x].append(idx) vis = [False for _ in range(length)] inq = [False for _ in range(length)] q = Queue() q.put((0, 0)) inq[0] = True g = length - ...
leetcode-219
简单的滑动窗口+哈希表,代码写的比较丑
1234567891011121314151617181920class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool: k += 1 table = set() f = False g = min(k, len(nums)) for i in range(g): if nums[i] in table: f = True break table.add(nums[i]) if f: return True for i in range(g, len(nums)): table.remove(nums[i - k]) if nums[i] in table: f = True break table.add(nums[i]) return f
leetcode-382
最简单的方式:先用List存储,然后用Random包随机。
12345678910111213141516171819202122# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def __init__(self, head: Optional[ListNode]): self.arr = [] while head is not None: self.arr.append(head.val) head = head.next self.length = len(self.arr) def getRandom(self) -> int: import random x = random.randint(0, self.length -1) retu ...
研究生入学第一天
隔了很长时间写一篇博客,也许叫做随手写的心情实录比较好。
fdu入学第一天,果然研究生和本科还是不一样的,主要是大家都有自己的圈子,我一个人在这个就显得比较孤单了,emm,就是这么回事,可能以后吃饭上课就是一个人的路线了,也不是强求一定要有人陪着,但是还是会觉得有点孤单,毕竟大多数人还是比较喜欢有能够交心的朋友然后嘻嘻哈哈的吧,而不是仅限于点头之交。
明天体检&组会,仅此而已。
STL阅读笔记-迭代器
概要STL的中心思想在于把数据(容器)和算法分离开,彼此之间没有关系,独立设计,都不必关心彼此的实现细节,但是那我们就需要用什么东西去使这两者能够结合起来,这就是迭代器的意义。
以 C++14 的 STL 源码为例,其线性查找函数如下所示
123456789101112131415161718192021222324/// This is an overload used by find algos for the Input Iterator case.template<typename _InputIterator, typename _Predicate> inline _InputIterator __find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred, input_iterator_tag) { while (__first != __last && !__pred(__first)) ++__first; retur ...
STL阅读笔记-Traits
最近一个月读了读《STL源码剖析》,有点散乱,打算把一些比较重要的东西记录下来。
空间适配器那部分有点读的不是很明白,也不是很仔细,主要是我个人对于这些空间上的管理不是很感兴趣 ¿,因此只是略略的读了一遍。
而迭代器这部分就比较有意思了,因此我决定从迭代器这部分开始比较仔细的做笔记。
本文章主要讲一讲 Traits 编程技法。
在这之前需要了解一下C++的一些复杂特性,以下主要说模板特化与偏特化。
模板如下是一个基本的模板类写法,使用了仿函数(重载了括号运算符的类。简而言之,可以把一个类对象当做一个函数似的去调用)
1234567template <class T>class Equal() { bool operator() (T& x, T& y) { return x == y; }}
但是这个模板真的能够通用吗,答案是否定的,比如浮点数之间的比较,众所周知浮点数的存储是有误差的,因此两个浮点数的大小比较不能简单的用 == 的方式,而应该定义为相差的绝对值不超过eps(eps需要多少由你自己的需求决定) ...
时隔一年多
开始打理这个一年多没搞过的博客
公网连接阿里云ecs上的mongodb
这几天因为要把爬虫部署在云服务器上,所以需要远程连接阿里云ecs的mongodb,在网上找了一大堆资料没一点用,渐觉无望,最后终于找到一篇博文有效的了!!!激动地老泪纵横(因为之前已经花了一晚上配置了)。
此为博客连接,建议进去看,原博主比我讲的清楚的多。
本人配置:centos7(其他linux也没有太大区别),mongodb4.2
不会使用vim的同学稍微百度一下
首先要修改数据库配置
1vi /etc/mongod.conf
然后把 $bindIp$ 这一行注释掉, 并且在下面新加一行
1bindIpAll: true
修改防火墙配置,放行 $mongodb$ 服务的端口
若防火墙未打开,要先打开防火墙,以下为有关防火墙的一整套命令
12345systemctl status firewalldsystemctl stop firewalldsystemctl start firewalld # 用这个就行systemctl disable firewalldsystemctl enable firewalld
1iptables -A INPUT -p t ...
Chrome页面 喔唷崩溃了 问题
总算能够闲下来好好写一篇博客了,前段时间忙于课程设计与期末考试。
最近碰到一个很坑爹的问题,就是Chrome在你没有更新的时候总是会不厌其烦的提醒你去更新,搞得人很烦,于是我就点了安装更新,以免它再提示,结果……更新完之后打开任何网页都是提示“喔唷崩溃了”,给我整懵了,据说这是Google更新出现的问题。
网上找到了一些解决方案,有一类是修改用快捷方式打开浏览器的方式,打开快捷方式的属性后,在目标后面添加—no-sandbox后缀,但这种方式打开Chrome会有安全提示,不美观而且麻烦,另一种是在后面加 —disable-features=RendererCodeIntegrity后缀,没有了安全提示,结果我一度以为解决了……,但你会发现,用快捷方式打开浏览器没有问题,但用别的方式,例如点开QQ消息里的链接,还是会显示“喔唷崩溃了”……
最后找到了一个完美的解决方案,点此进入,若没有博客里说的那个路径,需要自己手动创建(本人就是)。