146. LRU 缓存机制(链表+哈希表)

2021年3月2日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 题目简介2. 题解参考文献1. 题目简介146. LRU 缓存机制2. 题解分析 LRU 的操作,要让 put 和 get 方法的时间复杂度为 O(1),可以总结出 cache 这个数据结构必要的条件:查找快,插入快,删除快,有顺序之分。所以考虑链表(插入快,删除快,有顺序之分) + 哈希表(查找快)。class LRUCache {private: int cap; list<p
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 15. 三数之和(排序 + 双指针)

2021年3月3日 周三天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 题目简介2. 题解(排序 + 双指针)参考文献1. 题目简介Leetcode 15. 三数之和2. 题解(排序 + 双指针)主要思路:排序 + 双指针,难点是如何去重。算法流程如下:class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sor
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 25. K 个一组翻转链表(朴实无华的模拟法)

2021年3月4日 周四天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 题目简介2. 题解(模拟法)参考文献1. 题目简介25. K 个一组翻转链表2. 题解(模拟法)朴实无华的模拟法:思路类似于 Leetcode 92. 反转链表 II,只不过更复杂一些,需要每次根据头尾结点反转k个结点,然后把断掉的地方接上,直到剩下的结点不足k个为止。/** * Definition for singly-linked list. * struct ListNode { *
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

LeetCode 160. 相交链表(合并情况,简化代码)

2021年3月5日 周五天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 题目简介2. 题解1. 题目简介160. 相交链表2. 题解思路比较简单:走完自己的路之后,再走别人的路,这样就能一起到达交点了。问题是如何让代码写的简洁。我们可以把两个链表不相交的情况,看作它们相交于NULL,这样就可以把相交和不相交合并成相交一种情况:class Solution {public: ListNode *getIntersectionNode(ListNode *headA,
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode20 有效的括号(栈的妙用(有简洁写法))

2021年3月10日 周三 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 题目简介2. 题解(栈的妙用)参考文献1. 题目简介20. 有效的括号2. 题解(栈的妙用)这道题的思路并不难:利用栈先进先出的特点,比较容易解决,问题在于程序的实现,有一种比较简洁的写法。常规写法:class Solution {public: bool isValid(string s) { stack<char> st; for(const
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

剑指 Offer 36. 二叉搜索树与双向链表(考察中序遍历,需要存储前一个节点)

2021年03月11日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解(中序遍历,存储前一个节点)2.1 递归2.2 迭代参考文献1. 问题简介剑指 Offer 36. 二叉搜索树与双向链表2. 题解(中序遍历,存储前一个节点)中序遍历每一个节点,同时存储上一个节点,完成双向链表的构建。2.1 递归class Solution {public: Node* pre, *head; Node* treeToDoublyList(Node
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

LeetCode 42. 接雨水(双指针巧妙求解,韦恩图拍案叫绝)

2021年03月13日 周六 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 多种解法(数学法最为巧妙)2.1 按列求(循序渐进)2.1.1 暴力法(双循环)2.1.2 暴力法优化一——动态规划2.1.3 暴力法优化二——双指针,巧妙求解2.2 按行求(单调栈)2.3 数学法(韦恩图,拍案叫绝)参考文献1. 问题简介42. 接雨水2. 多种解法(数学法最为巧妙)具体可参考:https://leetcode-cn.com/problems/trapping-rain
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

详解C++的模板中typename关键字的用法

2021年03月16日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】详解C++的模板中typename关键字的用法
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

LeetCode 56.合并区间(排序+双指针)

2021年03月16日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解参考文献1. 问题简介56. 合并区间2. 题解排序+双指针:先按照左区间的大小进行排序,然后利用双指针,循环的进行区间合并。class Solution {public: struct cmp{ bool operator()(const vector<int>& v1,const vector<int>& v2){
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 46. 全排列(经典回溯法)

2021年03月18日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解(回溯大法)2.1 临时数组法2.2 交换法*复杂度分析参考文献1. 问题简介46. 全排列2. 题解(回溯大法)2.1 临时数组法class Solution {public: unordered_set<int> uset; // 利用哈希表判断元素是否遍历过了 vector<vector<int>> res; vect
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 31. 下一个排列(为什么要这么做?)

2021年03月19日 周五 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解(为什么是这么做?)参考文献1. 问题简介31. 下一个排列2. 题解(为什么是这么做?)这道题最重要的是理解思路,思考为什么这么做之后就能得到下一个排列? 下面是具体思路:思路理清之后,代码就比较容易实现了:class Solution {public: void nextPermutation(vector<int>& nums) {
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 470. 用 Rand7() 实现 Rand10()(拒绝采样)

2021年03月19日 周五 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解(拒绝采样)2.1 方法一2.2 方法二参考文献1. 问题简介470. 用 Rand7() 实现 Rand10()2. 题解(拒绝采样)具体可参考:从最基础的讲起如何做到均匀的生成随机数2.1 方法一class Solution {public: int rand10() { while(true){ int a = rand7();
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 718. 最长重复子数组(DP;滑动窗口)

2021年03月25日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解2.1 动态规划2.2 滑动窗口(思路巧妙)参考文献1. 问题简介718. 最长重复子数组2. 题解2.1 动态规划class Solution {public: int findLength(vector<int>& A, vector<int>& B) { int m = A.size(), n = B.size(
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

Leetcode 82. 删除排序链表中的重复元素 II(迭代;递归(非简单的递归))

2021年03月26日 周五 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】本文目录1. 问题简介2. 题解2.1 迭代2.2 递归参考文献1. 问题简介82. 删除排序链表中的重复元素 II2. 题解2.1 迭代求解的关键点在于:当遇到重复元素并删除完了的时候,不要更新pre ,因为可能cur->next还是重复的节点;只有当cur->val和cur->next->val不相等时(保证了cur一定不是重复的节点),才更新pre。class Solution {p
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

为什么C++是面向对象的语言?

2021年03月27日 周六 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】为什么C++是面向对象的语言?
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

C++ 函数/模板的偏特化和全特化

2021年03月30日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】直接用代码来解释:#include <iostream>using namespace std; template<typename T, typename N>class Test{public: Test( T i, N j ) : a(i), b(j) { cout<<"普通模板类"<< a <<' ' <&lt
分类: 其他 发布时间: 03-31 09:52 阅读次数: 0

2021新版个人征信报告将实施,这些坑一定不能踩!思维导图详细整理

据悉2021年4月份,中国人民银行的新版征信报告就要上线了。在此之前,我国的征信系统早已成为世界上收录人数最多、数据规模最大,覆盖范围最广的征信系统,那么即将实施的第二代征信系统究竟加入了哪些内容?有哪些是我们要注意的地方呢?通过思维导图一起来梳理一下这些变化!办理过购房贷或经营贷等贷款的小伙伴应该都知道征信报告是各大银行机构非常看重的一份文件,通过这份文件银行可以看到每个人的信用状况是否良好,是否会存在较大风险等等,所以征信系统对于一个人的影响是非常大的。随着互联网发展越来越迅速,其实现在的旧版征信
分类: 其他 发布时间: 03-31 09:51 阅读次数: 0

行人重识别基本介绍

行人重识别(ReID)基本介绍前言最近一段时间开始了深度学习领域的学习,但总是东看看西看看停留在表面。看过的东西很快就忘了,遇到不懂的地方也都就扔到了一边,鉴于学术和毕业上的压力,决定开始更新这个博客,一方面记录整理自己学过的东西,另一方面也为了督促自己每天都能够有所进步。这篇文章是在学习罗浩老师发布在bilibili上的课程后进行的,对于那些准备进入行人重识别领域的小白来说,在这里推荐一下罗浩老师的课程。虽说发布时间已经是几年前了,有些框架或者知识已经更新,但仍是不可多得的入门材料。b站浙江大学罗
分类: 其他 发布时间: 03-31 09:43 阅读次数: 0

行人重识别-表征学习

行人重识别(ReID)-表征学习前言在记录今天的内容前,先推一下罗浩老师的行人重识别的论文综述,这对于了解行人重识别领域是有很大帮助的,接下来的几篇博客呢,也是围绕这篇综述中的内容进行介绍的。行人重识别-罗浩知乎专栏顺便附上几个行人重识别的开源代码:https://github.com/zhunzhong07/IDE-baseline-Market-1501https://github.com/KaiyangZhou/deep-person-reidhttps://github.com/hua
分类: 其他 发布时间: 03-31 09:43 阅读次数: 0

行人重识别-度量学习

行人重识别-度量学习前言和前面介绍到的表征学习一样,度量学习也是基于全局特征学习的一种方法,且被广泛用于图像检索领域。不同于表征学习通过分类或者验证的方式,度量学习目的在于通过网络学习两张图片的相似度。在行人重识别问题上,表现为同一行人的不同图片之间的相似度远大于不同行人的不同图片。定义定义如下一个映射:将图片从原始域映射到特征域(就是从真实图片提取特征的意思),之后再定义一个距离度量函数:来计算两个特征之间的的距离。注:这个距离度量函数并不唯一,只要是能够在特征空间描述特征向量的相似度的函数
分类: 其他 发布时间: 03-31 09:43 阅读次数: 0