算法拾遗
算法学习
苦泉
这个作者很懒,什么都没留下…
展开
-
leetcode-201:数字范围按位与
leetcode-201:数字范围按位与链接数字范围按位与分析首先我们先查看数据范围 [0-231-1],数据范围很大,这个时候我们可以初步判定时间复杂度是O(1) or O(logn)级别logn级别的复杂度一般是二分,嗯…想了一下,没什么好的思路,就从O(1)开始考虑吧.既然答案是二进制与,那么我们不妨从二进制角度来考虑.将left和right转化为二进制之后,突然发现了一个显而易见的规律,如果l和r的二进制位不一样,那么结果一定是0,为什么呢?对于任意一组二进制位不同的left和ri原创 2022-01-10 00:18:57 · 3945 阅读 · 0 评论 -
leetcode-5:最长回文子串
leetcode-5:最长回文子串链接最长回文子串分析我们枚举回文子串的中心,然后搜索向两边的最大延申长度,同时维护答案.codeclass Solution {public: string longestPalindrome(string s) { string res; int n = s.size(); for (int i = 0; i < n; i ++) { // 枚举长度为奇数的回文子串原创 2022-01-08 23:36:48 · 3729 阅读 · 0 评论 -
leetcode-146:LRU缓存
leetcode-146:LRU缓存链接LRU 缓存分析实现一个最近最少使用的数据结构.同时要求get和put都是常数复杂程度.首先我们先来考虑如何在O(1)时间内获取.显而易见,要想在O(1)时间内获取对应的数据,我们需要用的哈希表,哈希表可以O(1)时间内获取对应key值的val.再然后就是考虑如何判断出最近最少.这个我们使用双链表来维护.每当我们对一个数进行操作之后,就将它添加到链表的头部,这样链表的尾部就是最近最少使用的节点.code & 注释class LRUCache原创 2022-01-04 09:26:39 · 391 阅读 · 0 评论 -
leetcode-869:重排序得到2的幂
leetcode-869:重排序得到2的幂链接重新排序得到 2 的幂题目分析给定正整数,然后判断任何顺序是否存在一种排序,是2的幂.如果要是2的幂,首先需要存在有2的幂和N的数位相同,我们发现N的范围最多到10^9,那么我们就可以二分2的次幂,寻找一个最小的数位等于N的,然后判断能不能组合即可.代码C++class Solution {public: bool reorderedPowerOf2(int x) { // 转化成字符串,方便统计数位,原创 2021-11-02 17:52:59 · 214 阅读 · 0 评论